Share via


Classe SqlCeCommandBuilder

Fournit un moyen de générer automatiquement des commandes de table simple utilisées pour harmoniser les modifications apportées à DataSet avec la base de données associée. Cette classe ne peut pas être héritée.

Espace de noms :  System.Data.SqlServerCe
Assembly :  System.Data.SqlServerCe (dans System.Data.SqlServerCe.dll)

Syntaxe

'Déclaration
Public NotInheritable Class SqlCeCommandBuilder _
    Inherits DbCommandBuilder
'Utilisation
Dim instance As SqlCeCommandBuilder
public sealed class SqlCeCommandBuilder : DbCommandBuilder
public ref class SqlCeCommandBuilder sealed : public DbCommandBuilder
[<SealedAttribute>]
type SqlCeCommandBuilder =  
    class
        inherit DbCommandBuilder
    end
public final class SqlCeCommandBuilder extends DbCommandBuilder

Notes

Vous pouvez créer un objet SqlCeCommandBuilder pour générer automatiquement des instructions Transact-SQL pour des mises à jour de table simple si vous définissez la propriété SelectCommand.

SqlCeCommandBuilder s'inscrit comme écouteur des événements RowUpdating si vous définissez la propriété DataAdapter. Vous ne pouvez associer qu'un objet SqlCeDataAdapter ou SqlCeCommandBuilder à l'autre simultanément.

Pour générer des instructions INSERT, UPDATE ou DELETE, SqlCeCommandBuilder utilise la propriété SelectCommand pour récupérer automatiquement un jeu de métadonnées requis. Si vous modifiez SelectCommand une fois les métadonnées récupérées (par exemple, après la première mise à jour), vous devez appeler la méthode RefreshSchema()()()() pour mettre à jour les métadonnées.

SelectCommand doit également retourner au moins une colonne de clés primaires ou unique. Sinon, une exception InvalidOperation est générée et les commandes ne sont pas générées.

SqlCeCommandBuilder utilise aussi les propriétés Connection et Transaction référencées par SelectCommand. Vous devez appeler RefreshSchema()()()() en cas de modification d'une de ces propriétés, ou si le SelectCommand proprement dit est remplacé. Sinon, les propriétés InsertCommand, UpdateCommand et DeleteCommand conservent leurs valeurs précédentes.

Si vous appelez Dispose()()()(), SqlCeCommandBuilder est dissocié de SqlCeDataAdapter, et les commandes générées ne sont plus utilisées.

Exemples

L'exemple suivant utilise SqlCeCommand, ainsi que SqlCeDataAdapter et SqlCeConnection, pour sélectionner des lignes dans une source de données. Une chaîne de connexion, une chaîne de requête et une chaîne qui est le nom de la table de base de données sont passées à l'exemple. L'exemple crée ensuite SqlCeCommandBuilder. Ce générateur de commande est ensuite utilisé par l'adaptateur de données pour mettre à jour le groupe de données modifié dans la base de données 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());
}

Hiérarchie d'héritage

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

Sécurité des threads

Any public static (Shared in Microsoft Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Voir aussi

Référence

Membres SqlCeCommandBuilder

Espace de noms System.Data.SqlServerCe