SqlCommandBuilder Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Generiert automatisch Befehle für einzelne Tabellen, durch die an einem DataSetvorgenommene Änderungen mit der zugeordneten SQL Server-Datenbank abgeglichen werden. Diese Klasse kann nicht vererbt werden.
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
- Vererbung
-
SqlCommandBuilder
Beispiele
Im folgenden Beispiel wird , SqlCommandzusammen SqlDataAdapter und SqlConnectionverwendet, um Zeilen aus einer Datenquelle auszuwählen. Im Beispiel wird eine Verbindungszeichenfolge, eine Abfragezeichenfolge, bei der es sich um eine Transact-SQL SELECT-Anweisung handelt, und eine Zeichenfolge übergeben, die den Namen der Datenbanktabelle darstellt. Im Beispiel wird dann ein SqlCommandBuildererstellt.
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;
}
}
Hinweise
Der SqlDataAdapter generiert nicht automatisch die Transact-SQL-Anweisungen, die erforderlich sind, um an einem DataSet vorgenommene Änderungen mit der zugeordneten instance von SQL Server abzugleichen. Sie können jedoch ein SqlCommandBuilder -Objekt zum automatischen Generieren von Transact-SQL-Anweisungen für Einzeltabellenupdates erstellen, wenn Sie die SelectCommand -Eigenschaft von SqlDataAdapterfestlegen. Anschließend werden alle zusätzlichen Transact-SQL-Anweisungen, die Sie nicht festlegen, vom SqlCommandBuildergeneriert.
Der SqlCommandBuilder registriert sich selbst als Listener für RowUpdating Ereignisse, wenn Sie die DataAdapter -Eigenschaft festlegen. Sie können nur ein SqlDataAdapter Objekt oder SqlCommandBuilder ein Objekt gleichzeitig miteinander zuordnen.
Zum Generieren von INSERT-, UPDATE- oder DELETE-Anweisungen verwendet die SqlCommandBuilderSelectCommand -Eigenschaft, um einen erforderlichen Satz von Metadaten automatisch abzurufen. Wenn Sie die SelectCommand ändern, nachdem die Metadaten abgerufen wurden, z. B. nach dem ersten Update, sollten Sie die RefreshSchema -Methode aufrufen, um die Metadaten zu aktualisieren.
Der SelectCommand
muss außerdem mindestens einen Primärschlüssel oder eine eindeutige Spalte zurückgeben. Wenn keine vorhanden ist, wird eine InvalidOperation-Ausnahme generiert, und die Befehle werden nicht generiert.
Verwendet SqlCommandBuilder auch die ConnectionEigenschaften , CommandTimeoutund , auf Transaction die SelectCommandvon verwiesen wird. Der Benutzer sollte aufrufen RefreshSchema , wenn eine oder mehrere dieser Eigenschaften geändert werden oder wenn die SelectCommand sich selbst ersetzt wird. Andernfalls behalten die InsertCommandEigenschaften , UpdateCommandund DeleteCommand ihre vorherigen Werte bei.
Wenn Sie aufrufen Dispose, wird die SqlCommandBuilder Zuordnung zu SqlDataAdapterdem getrennt, und die generierten Befehle werden nicht mehr verwendet.
Konstruktoren
SqlCommandBuilder() |
Initialisiert eine neue Instanz der SqlCommandBuilder-Klasse. |
SqlCommandBuilder(SqlDataAdapter) |
Initialisiert eine neue Instanz der SqlCommandBuilder-Klasse mit dem zugeordneten SqlDataAdapter-Objekt. |
Eigenschaften
CatalogLocation |
Legt die CatalogLocation für eine Instanz der SqlCommandBuilder-Klasse fest oder ruft diese ab. |
CatalogSeparator |
Legt eine Zeichenfolge als Katalogtrennzeichen für eine Instanz der SqlCommandBuilder-Klasse fest oder ruft diese ab. |
DataAdapter |
Ruft ein SqlDataAdapter-Objekt ab, für das automatisch Transact-SQL-Anweisungen generiert werden, oder legt dieses fest. |
QuotePrefix |
Ruft das oder die Anfangszeichen ab, die beim Angeben von SQL Server-Datenbankobjekten (z. B. Tabellen oder Spalten) verwendet werden sollen, deren Namen Leerzeichen oder reservierte Token enthalten, oder legt diese fest. |
QuoteSuffix |
Ruft das oder die Endzeichen ab, die beim Angeben von SQL Server-Datenbankobjekten (z. B. Tabellen oder Spalten) verwendet werden sollen, deren Namen Leerzeichen oder reservierte Token enthalten, oder legt diese fest. |
SchemaSeparator |
Ruft das als Trennzeichen zwischen dem Schemabezeichner und anderen Bezeichnern zu verwendende Zeichen ab oder legt dieses fest. |
Methoden
DeriveParameters(SqlCommand) |
Ruft Parameterinformationen aus der im SqlCommand angegebenen gespeicherten Prozedur ab und füllt die Parameters-Auflistung des angegebenen SqlCommand-Objekts auf. |
GetDeleteCommand() |
Ruft das automatisch generierte SqlCommand-Objekt ab, das für die Ausführung von Löschvorgängen in der Datenbank erforderlich ist. |
GetDeleteCommand(Boolean) |
Ruft das automatisch generierte SqlCommand-Objekt ab, das für die Ausführung von Löschvorgängen in der Datenbank erforderlich ist. |
GetInsertCommand() |
Ruft das automatisch generierte SqlCommand-Objekt ab, das für das Ausführen von Einfügevorgängen in der Datenbank erforderlich ist. |
GetInsertCommand(Boolean) |
Ruft das automatisch generierte SqlCommand-Objekt ab, das für das Ausführen von Einfügevorgängen in der Datenbank erforderlich ist. |
GetUpdateCommand() |
Ruft das automatisch generierte SqlCommand-Objekt ab, das für das Ausführen von Aktualisierungen in der Datenbank erforderlich ist. |
GetUpdateCommand(Boolean) |
Ruft das automatisch generierte SqlCommand-Objekt ab, das für das Ausführen von Aktualisierungen in der Datenbank erforderlich ist. |
QuoteIdentifier(String) |
Generiert automatisch Befehle für einzelne Tabellen, durch die an einem DataSetvorgenommene Änderungen mit der zugeordneten SQL Server-Datenbank abgeglichen werden. Diese Klasse kann nicht vererbt werden. |
UnquoteIdentifier(String) |
Bei einem Bezeichner mit Anführungszeichen wird die korrekte Form dieses Bezeichners ohne Anführungszeichen zurückgegeben. Dies schließt ein, dass eingebettete Anführungszeichen im Bezeichner ordnungsgemäß ohne Escapezeichen verwendet werden. |