Freigeben über


SqlCommandBuilder Klasse

Definition

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.

Gilt für: