SqlCeCommandBuilder Class

Genera automaticamente comandi di tabella singola per risolvere le differenze relative a modifiche apportate a una classe DataSet con il database associato. Questa classe non può essere ereditata.

Spazio dei nomi: System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in system.data.sqlserverce.dll)

Sintassi

'Dichiarazione
Public NotInheritable Class SqlCeCommandBuilder
    Inherits DbCommandBuilder
public sealed class SqlCeCommandBuilder : DbCommandBuilder
public ref class SqlCeCommandBuilder sealed : public DbCommandBuilder
public final class SqlCeCommandBuilder extends DbCommandBuilder
public final class SqlCeCommandBuilder extends DbCommandBuilder

Osservazioni

È possibile creare un oggetto SqlCeCommandBuilder per generare automaticamente istruzioni Transact-SQL per aggiornamenti di tabelle singole, impostando la proprietà SelectCommand.

La classe SqlCeCommandBuilder registra se stessa come listener di eventi RowUpdating ogni volta che viene impostata la proprietà DataAdapter. È possibile associare reciprocamente solo un oggetto SqlCeDataAdapter o SqlCeCommandBuilder per volta.

Per generare istruzioni INSERT, UPDATE o DELETE, la classe SqlCeCommandBuilder utilizza la proprietà SelectCommand per recuperare automaticamente un set necessario di metadati. Se si modifica la proprietà SelectCommand dopo il recupero dei metadati, ad esempio dopo il primo aggiornamento, sarà necessario richiamare il metodo RefreshSchema per aggiornare i metadati.

È inoltre necessario che la proprietà SelectCommand restituisca almeno una chiave primaria o una colonna univoca. In caso contrario, viene generata un'eccezione InvalidOperation e i comandi non vengono generati.

L'oggetto SqlCeCommandBuilder utilizza inoltre le proprietà Connection e Transaction a cui fa riferimento la proprietà SelectCommand. Se una di queste proprietà viene modificata o se la stessa SelectCommand viene sostituita, è necessario chiamare il metodo RefreshSchema. In caso contrario, le proprietà InsertCommand, UpdateCommand e DeleteCommand mantengono i valori precedenti.

Se si chiama il metodo Dispose, la classe SqlCeCommandBuilder verrà dissociata dalla classe SqlCeDataAdapter e i comandi generati non saranno più utilizzati.

Gerarchia di ereditarietà

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

Esempio

Nell'esempio che segue sono utilizzati gli oggetti SqlCeCommand, SqlCeDataAdapter e SqlCeConnection per selezionare le righe da un'origine dati. Nell'esempio viene passata una stringa di connessione, una stringa di query e una stringa che rappresenta il nome della tabella del database. Viene quindi creato un oggetto SqlCeCommandBuilder. Questo generatore comandi viene quindi utilizzato dall'adattatore di dati per aggiornare il DataSet modificato nel database locale.

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());
}

Affidabilità

Tutti i membri statici pubblici (Shared in Microsoft Visual Basic) di questo tipo sono affidabili. Non è invece garantita l'affidabilità dei membri dell'istanza.

Piattaforme

Piattaforme di sviluppo

Windows Vista, Windows Mobile 5.0, Windows XP Professional with Service Pack 2 (SP2), Windows Server 2003, Windows Mobile 2003 for Pocket PC, Windows CE 5.0
Informazioni sulla versione
.NET Framework e .NET Compact Framework
Supportato in 3.5
.NET Framework
Supportato in 3.0
.NET Compact Framework e .NET Framework
Supportato in 2.0

Vedere anche

Riferimento

SqlCeCommandBuilder Members
System.Data.SqlServerCe Namespace