Condividi tramite


SqlCommandBuilder Classe

Definizione

Genera automaticamente comandi per tabella singola che vengono usati per risolvere le differenze nelle modifiche apportate a un DataSet con il database SQL Server associato. La classe non può essere ereditata.

public ref class SqlCommandBuilder sealed : System::Data::Common::DbCommandBuilder
public sealed class SqlCommandBuilder : System.Data.Common.DbCommandBuilder
type SqlCommandBuilder = class
    inherit DbCommandBuilder
Public NotInheritable Class SqlCommandBuilder
Inherits DbCommandBuilder
Ereditarietà
SqlCommandBuilder

Esempio

Nell'esempio seguente viene usato , insieme SqlDataAdapter e SqlConnection, per selezionare le righe da un'origine SqlCommanddati. L'esempio viene passata una stringa di connessione, una stringa di query che rappresenta un'istruzione Transact-SQL SELECT e una stringa che corrisponde al nome della tabella di database. L'esempio crea quindi un SqlCommandBuilderoggetto .

using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandBuilderCS
{
    class Program
    {
        static void Main()
        {
            string cnnst = "";
            string queryst = "";
            string tablen = "";
            DataSet ds = SelectSqlRows(cnnst, queryst, tablen);

        }

        public static DataSet SelectSqlRows(string connectionString,
            string queryString, string tableName)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = new SqlCommand(queryString, connection);
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

                connection.Open();

                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet, tableName);

                //code to modify data in DataSet here

                builder.GetUpdateCommand();

                //Without the SqlCommandBuilder this line would fail
                adapter.Update(dataSet, tableName);

                return dataSet;
            }
        }

Commenti

Non SqlDataAdapter genera automaticamente le istruzioni Transact-SQL necessarie per riconciliare le modifiche apportate a un DataSet con l'istanza associata di SQL Server. È tuttavia possibile creare un SqlCommandBuilder oggetto per generare automaticamente istruzioni Transact-SQL per gli aggiornamenti a tabella singola se si imposta la SelectCommand proprietà dell'oggetto SqlDataAdapter. Eventuali istruzioni Transact-SQL aggiuntive che non sono impostate vengono quindi generate dall'oggetto SqlCommandBuilder.

Si SqlCommandBuilder registra come listener per RowUpdating gli eventi ogni volta che si imposta la DataAdapter proprietà. È possibile associare uno o SqlCommandBuilder un oggetto l'uno SqlDataAdapter all'altro alla volta.

Per generare istruzioni INSERT, UPDATE o DELETE, viene SqlCommandBuilder utilizzata la SelectCommand proprietà per recuperare automaticamente un set obbligatorio di metadati. Se si modifica l'oggetto SelectCommand dopo il recupero dei metadati, ad esempio dopo il primo aggiornamento, è necessario chiamare il RefreshSchema metodo per aggiornare i metadati.

È inoltre necessario che SelectCommand restituisca almeno una chiave primaria o una colonna univoca. Se non sono presenti, viene generata un'eccezione InvalidOperation e i comandi non vengono generati.

L'oggetto SqlCommandBuilder usa anche le Connectionproprietà , CommandTimeoute Transaction a cui fa riferimento l'oggetto SelectCommand. L'utente deve chiamare RefreshSchema se una o più di queste proprietà vengono modificate o se la SelectCommand stessa viene sostituita. In caso contrario, le proprietà , UpdateCommande DeleteCommand mantengono i InsertCommandvalori precedenti.

Se si chiama Dispose, l'oggetto è non gestito dall'oggetto SqlDataAdapterSqlCommandBuilder e i comandi generati non vengono più usati.

Costruttori

SqlCommandBuilder()

Inizializza una nuova istanza della classe SqlCommandBuilder.

SqlCommandBuilder(SqlDataAdapter)

Inizializza una nuova istanza della classe SqlCommandBuilder con l'oggetto SqlDataAdapter associato.

Proprietà

CatalogLocation

Ottiene o imposta l'oggetto CatalogLocation per un'istanza della classe SqlCommandBuilder.

CatalogSeparator

Ottiene o imposta una stringa utilizzata come separatore di catalogo per un'istanza della classe SqlCommandBuilder.

DataAdapter

Ottiene o imposta un oggetto SqlDataAdapter per il quale sono generate automaticamente istruzioni Transact-SQL.

QuotePrefix

Ottiene o imposta il carattere o i caratteri iniziali da utilizzare quando si specificano oggetti di database SQL Server, ad esempio tabelle o colonne, i cui nomi contengono caratteri quali spazi o token riservati.

QuoteSuffix

Ottiene o imposta il carattere o i caratteri finali da utilizzare quando si specificano oggetti di database SQL Server, ad esempio tabelle o colonne, i cui nomi contengono caratteri quali spazi o token riservati.

SchemaSeparator

Ottiene o imposta il carattere da utilizzare come separatore tra l'identificatore di schema e altri identificatori.

Metodi

DeriveParameters(SqlCommand)

Recupera le informazioni sui parametri dalla stored procedure specificata nella classe SqlCommand e compila l'insieme Parameters dell'oggetto SqlCommand specificato.

GetDeleteCommand()

Ottiene l'oggetto SqlCommand generato automaticamente, richiesto per eseguire le operazioni di eliminazione nel database.

GetDeleteCommand(Boolean)

Ottiene l'oggetto SqlCommand generato automaticamente, richiesto per eseguire le operazioni di eliminazione nel database.

GetInsertCommand()

Ottiene l'oggetto SqlCommand generato automaticamente, richiesto per eseguire le operazioni di inserimento nel database.

GetInsertCommand(Boolean)

Ottiene l'oggetto SqlCommand generato automaticamente, richiesto per eseguire le operazioni di inserimento nel database.

GetUpdateCommand()

Ottiene l'oggetto SqlCommand generato automaticamente, richiesto per eseguire le operazioni di aggiornamento nel database.

GetUpdateCommand(Boolean)

Ottiene l'oggetto SqlCommand generato automaticamente, richiesto per eseguire le operazioni di aggiornamento nel database.

QuoteIdentifier(String)

Genera automaticamente comandi per tabella singola che vengono usati per risolvere le differenze nelle modifiche apportate a un DataSet con il database SQL Server associato. La classe non può essere ereditata.

UnquoteIdentifier(String)

Un identificatore con virgolette, restituisce il form senza virgolette corretto relativo all'identificatore. In tal modo viene inoltre ripristinata in modo corretto la condizione precedente di virgolette eventualmente presenti nell'identificatore sottoposte a escape.

Si applica a