Compartilhar via


SqlCeCommandBuilder Class

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
public sealed class SqlCeCommandBuilder : DbCommandBuilder
public ref class SqlCeCommandBuilder sealed : public DbCommandBuilder
public final class SqlCeCommandBuilder extends DbCommandBuilder
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.

Hierarquia de herança

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

Exemplo

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

Segurança de thread

Quaisquer membros estáticos públicos (compartilhados no Microsoft Visual Basic) desse tipo são thread safe. Não há garantia de que qualquer membro de instância seja thread safe.

Plataformas

Plataformas de desenvolvimento

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
Informações de versão
.NET Framework e NET Compact Framework
Com suporte no 3.5
.NET Framework
Com suporte no 3.0
.NET Compact Framework e .Net Framework
Com suporte no 2.0

Consulte também

Referência

SqlCeCommandBuilder Members
System.Data.SqlServerCe Namespace