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.