SqlCeCommandBuilder-Klasse

Stellt ein Verfahren zum automatischen Generieren von Befehlen für einzelne Tabellen bereit. Mit diesen Befehlen können Änderungen an einer DataSet-Klasse mit der zugeordneten SQL Server Mobile-Datenbank abgeglichen werden. Die Klasse kann nicht vererbt werden.

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

Syntax

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

Hinweise

Sie können ein SqlCeCommandBuilder-Objekt erstellen, um Transact-SQL-Anweisungen für das Aktualisieren einzelner Tabellen automatisch zu generieren, indem Sie die SelectCommand-Eigenschaft festlegen.

Die SqlCeCommandBuilder-Klasse registriert sich selbst als Listener für RowUpdating-Ereignisse, wenn die DataAdapter-Eigenschaft festgelegt wird. Einem SqlCeDataAdapter-Objekt kann immer nur ein SqlCeCommandBuilder-Objekt gleichzeitig zugeordnet werden und umgekehrt.

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

Die SelectCommand-Eigenschaft muss also mindestens einen Primärschlüssel oder eine eindeutige Spalte zurückgeben. Wenn dies nicht der Fall ist, wird eine InvalidOperation-Ausnahme generiert, aber nicht die Befehle.

Die SqlCeCommandBuilder-Klasse verwendet auch die Connection-Eigenschaft und die Transaction-Eigenschaft, auf die durch die SelectCommand-Eigenschaft verwiesen wird. Sie müssen die öffentliche RefreshSchema-Methode aufrufen, wenn eine dieser Eigenschaften geändert oder die SelectCommand-Eigenschaft selbst ersetzt wird. Andernfalls behalten die Eigenschaften InsertCommand, UpdateCommand und DeleteCommand ihre vorherigen Werte bei.

Wenn Sie die Dispose-Methode aufrufen, wird die Zuordnung der SqlCeCommandBuilder-Klasse zur SqlCeDataAdapter-Klasse aufgehoben, und die generierten Befehle werden nicht mehr verwendet.

Beispiel

Im folgenden Beispiel wird die SqlCeCommand-Klasse gemeinsam mit der SqlCeDataAdapter-Klasse und der SqlCeConnection-Klasse zum Auswählen von Zeilen aus einer Datenquelle verwendet. Dem Beispiel wird eine Verbindungszeichenfolge, eine Abfragezeichenfolge und ein Zeichenfolge übergeben, die den Namen der Datenbanktabelle darstellt. Anschließend wird im Beispiel eine SqlCeCommandBuilder-Klasse erstellt. Der Befehlsgenerator wird dann vom Datenadapter verwendet, um das geänderte DataSet in der lokalen Datenbank zu aktualisieren.

Try
    Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf")
    conn.Open()

    Dim cmd As SqlCeCommand = conn.CreateCommand()
    cmd.CommandText = "SELECT * FROM employees"

    Dim adp As New SqlCeDataAdapter(cmd)

    Dim cb As New SqlCeCommandBuilder()
    cb.DataAdapter = adp

    MessageBox.Show(cb.GetUpdateCommand().CommandText)
    MessageBox.Show(cb.GetInsertCommand().CommandText)
    MessageBox.Show(cb.GetDeleteCommand().CommandText)

    Dim ds As New DataSet("test")
    adp.Fill(ds)

    ' Modify the contents of the DataSet
    '
    ds.Tables(0).Rows(0)("First Name") = "Joe"

    adp.Update(ds)

Catch e1 As Exception
    Console.WriteLine(e1.ToString())
End Try
try
{
    SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf");
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM employees";

    SqlCeDataAdapter adp = new SqlCeDataAdapter(cmd);

    SqlCeCommandBuilder cb = new SqlCeCommandBuilder();
    cb.DataAdapter = adp;

    MessageBox.Show(cb.GetUpdateCommand().CommandText);
    MessageBox.Show(cb.GetInsertCommand().CommandText);
    MessageBox.Show(cb.GetDeleteCommand().CommandText);

    DataSet ds = new DataSet("test");
    adp.Fill(ds);

    // Modify the contents of the DataSet
    //
    ds.Tables[0].Rows[0]["First Name"] = "Joe";

    adp.Update(ds);

}
catch (Exception e1)
{
    Console.WriteLine(e1.ToString());
}

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Data.Common.DbCommandBuilder
        System.Data.SqlServerCe.SqlCeCommandBuilder

Threadsicherheit

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

Plattformen

Windows CE, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows XP Professional x64 Edition, Windows XP SP2

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

Versionsinformationen

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

SqlCeCommandBuilder-Member
System.Data.SqlServerCe-Namespace