Partilhar via


Classe SqlCeCommandBuilder

Fornece um meio de gerar automaticamente comandos de tabela única usados para reconciliar alterações feitas a um DataSet com o banco de dados associado. Esta classe não pode ser herdada.

Namespace:  System.Data.SqlServerCe
Assembly:  System.Data.SqlServerCe (em System.Data.SqlServerCe.dll)

Sintaxe

'Declaração
Public NotInheritable Class SqlCeCommandBuilder _
    Inherits DbCommandBuilder
'Uso
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

Comentários

Você pode criar um objeto SqlCeCommandBuilder para gerar automaticamente instruções Transact-SQL para atualizações de uma tabela, se definir a propriedade SelectCommand.

O SqlCeCommandBuilder se registra como ouvinte de eventos RowUpdating sempre que você define a propriedade DataAdapter. É possível associar um objeto SqlCeDataAdapter ou SqlCeCommandBuilder somente entre si de uma vez.

Para gerar instruções INSERT, UPDATE ou DELETE, o SqlCeCommandBuilder usa a propriedade SelectCommand para recuperar um conjunto de metadados necessário automaticamente. Se você alterar o SelectCommand depois que os metadados forem recuperados (por exemplo, após a primeira atualização), deverá chamar o método RefreshSchema()()()() para atualizar os metadados.

O SelectCommand também deve retornar pelo menos uma coluna de chave primária ou exclusiva. Se nenhuma delas estiver presente, uma exceção InvalidOperation será gerada e os comandos não serão gerados.

O SqlCeCommandBuilder também usa as propriedades Connection e Transaction referenciadas pelo SelectCommand. Chame RefreshSchema()()()() se alguma dessas propriedades for modificada ou se o próprio SelectCommand for substituído. Caso contrário, as propriedades InsertCommand, UpdateCommand e DeleteCommand manterão seus valores anteriores.

Se você chamar Dispose()()()(), o SqlCeCommandBuilder será desassociado do SqlCeDataAdapter e os comandos gerados não serão mais usados.

Exemplos

O exemplo a seguir usa o SqlCeCommand, juntamente com SqlCeDataAdapter e SqlCeConnection, para selecionar linhas de uma fonte de dados. Uma cadeia de caracteres de conexão, uma cadeia de caracteres de consulta e uma cadeia de caracteres que é o nome da tabela do banco de dados são passadas para o exemplo. O exemplo cria então um SqlCeCommandBuilder. Esse construtor de comandos é então usado pelo adaptador de dados para atualizar o DataSet modificado no banco de dados local.

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

Hierarquia de herança

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

Segurança de thread

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.

Consulte também

Referência

Membros SqlCeCommandBuilder

Namespace System.Data.SqlServerCe