SqlCommandBuilder Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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. |