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