Freigeben über


OleDbCommandBuilder-Klasse

Generiert automatisch Befehle für einzelne Tabellen, durch die an einem DataSet vorgenommene Änderungen mit der zugeordneten Datenbank abgeglichen werden. Diese Klasse kann nicht vererbt werden.

Namespace: System.Data.OleDb
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public NotInheritable Class OleDbCommandBuilder
    Inherits DbCommandBuilder
'Usage
Dim instance As OleDbCommandBuilder
public sealed class OleDbCommandBuilder : DbCommandBuilder
public ref class OleDbCommandBuilder sealed : public DbCommandBuilder
public final class OleDbCommandBuilder extends DbCommandBuilder
public final class OleDbCommandBuilder extends DbCommandBuilder

Hinweise

Der OleDbDataAdapter generiert nicht automatisch die SQL-Anweisungen, die für den Abgleich von Änderungen an einem DataSet mit der zugeordneten Datenquelle erforderlich sind. Sie können jedoch ein OleDbCommandBuilder-Objekt erstellen, um SQL-Anweisungen für das Aktualisieren einzelner Tabellen automatisch zu generieren, indem Sie die SelectCommand-Eigenschaft von OleDbDataAdapter festlegen. Anschließend werden alle zusätzlichen, von Ihnen nicht festgelegten SQL-Anweisungen vom OleDbCommandBuilder generiert.

Der OleDbCommandBuilder registriert sich selbst als ein Listener für RowUpdating-Ereignisse, wenn Sie die DataAdapter-Eigenschaft festlegen. Einem OleDbDataAdapter-Objekt kann immer nur ein OleDbCommandBuilder-Objekt gleichzeitig zugeordnet werden und umgekehrt.

Zum Generieren von INSERT-Anweisungen, UPDATE-Anweisungen und DELETE-Anweisungen verwendet der OleDbCommandBuilder die SelectCommand-Eigenschaft, um einen erforderlichen Satz von Metadaten automatisch abzurufen. Wenn Sie SelectCommand nach dem Abrufen der Metadaten ändern (z. B. nach der ersten Aktualisierung), müssen Sie die RefreshSchema-Methode aufrufen, um die Metadaten zu aktualisieren.

Der OleDbCommandBuilder verwendet auch die Connection-Eigenschaft, die CommandTimeout-Eigenschaft und die Transaction-Eigenschaft, auf die durch SelectCommand verwiesen wird. Der Benutzer muss RefreshSchema aufrufen, wenn eine oder mehrere dieser Eigenschaften geändert werden oder SelectCommand selbst ersetzt werden. Andernfalls behalten die InsertCommand-Eigenschaft, die UpdateCommand-Eigenschaft und die DeleteCommand-Eigenschaft ihre vorherigen Werte bei.

Wenn Sie Dispose aufrufen, wird die Zuordnung von OleDbCommandBuilder zu OleDbDataAdapter aufgehoben, und die generierten Befehle werden nicht mehr verwendet.

Beispiel

Im folgenden Beispiel wird OleDbCommand gemeinsam mit OleDbDataAdapter und OleDbConnection verwendet, um Zeilen aus einer Datenquelle auszuwählen. Im Beispiel werden ein initialisiertes DataSet, eine Verbindungszeichenfolge, eine SQL-SELECT-Anweisung als Abfragezeichenfolge sowie eine Zeichenfolge mit dem Namen der Datenquelltabelle übergeben. Anschließend wird im Beispiel ein OleDbCommandBuilder erstellt.

Public Shared Function UpdateRows(connectionString As String, _
    queryString As String, tableName As String) As DataSet

    Dim dataSet As DataSet = New DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)

        connection.Open()

        adapter.Fill(dataSet, tableName)

        ' Code to modify data in DataSet here 

        ' Without the OleDbCommandBuilder this line would fail.
        adapter.Update(dataSet, tableName)
    End Using

    Return dataSet
End Function
public static DataSet UpdateRows(string connectionString, 
    string queryString, string tableName)
{
    DataSet dataSet = new DataSet();
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);

        connection.Open();

        adapter.Fill(dataSet, tableName);

        //code to modify data in DataSet here

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

        connection.Close();
    }
    return dataSet;
}

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Data.Common.DbCommandBuilder
        System.Data.OleDb.OleDbCommandBuilder

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

OleDbCommandBuilder-Member
System.Data.OleDb-Namespace

Weitere Ressourcen

Automatisches Generieren von Befehlen