SqlCeCommandBuilder Class

Proporciona un medio para generar de forma automática los comandos de tabla única que se utilizan para conciliar los cambios realizados en un DataSet con la base de datos asociada. No se puede heredar esta clase.

Espacio de nombres: System.Data.SqlServerCe
Ensamblado: System.Data.SqlServerCe (en system.data.sqlserverce.dll)

Sintaxis

'Declaración
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

Notas

Puede crear un objeto SqlCeCommandBuilder que genere automáticamente instrucciones de Transact-SQL para las actualizaciones de una sola tabla si se establece el valor de la propiedad SelectCommand.

El objeto SqlCeCommandBuilder se registra a sí mismo como agente de escucha de eventos RowUpdating siempre que se establezca la propiedad DataAdapter. Sólo se pueden asociar un objeto SqlCeDataAdapter y un objeto SqlCeCommandBuilder simultáneamente.

Para generar instrucciones INSERT, UPDATE o DELETE, SqlCeCommandBuilder utiliza la propiedad SelectCommand con el fin de recuperar automáticamente un conjunto de metadatos requerido. Si se cambia SelectCommand una vez que se han recuperado los metadatos (por ejemplo, después de la primera actualización), se debe llamar al método RefreshSchema para actualizar los metadatos.

SelectCommand también debe devolver como mínimo una clave principal o una columna única. Si no hay ninguna, se genera una excepción InvalidOperation, y no se genera ningún comando.

SqlCeCommandBuilder utiliza también las propiedades Connection y Transaction a las que hace referencia SelectCommand. Se debe llamar a RefreshSchema si se modifica cualquiera de estas propiedades, o si SelectCommand se reemplaza a sí mismo. En caso contrario, las propiedades InsertCommand, UpdateCommand y DeleteCommand conservan sus valores anteriores.

Si se llama a Dispose, se elimina la asociación de SqlCeCommandBuilder con SqlCeDataAdapter y los comandos generados se dejan de utilizar.

Jerarquía de herencia

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

Ejemplo

En el ejemplo siguiente se utiliza SqlCeCommand, junto con SqlCeDataAdapter y SqlCeConnection, para seleccionar filas de un origen de datos. En el ejemplo se pasa una cadena de conexión, una cadena de consulta y una cadena que es el nombre de la tabla de base de datos. A continuación, se crea un SqlCeCommandBuilder. El adaptador de datos utiliza a continuación ese generador de comandos para actualizar el objeto DataSet modificado en la base de datos 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());
}

Seguridad para subprocesos

Todos los miembros (Compartidos en Microsoft Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Plataformas

Plataformas de desarrollo

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
Información de la versión
.NET Framework y NET Compact Framework
Se admite en 3.5
.NET Framework
Se admite en 3.0
.NET Compact Framework y .Net Framework
Se admite en 2.0

Vea también

Referencia

SqlCeCommandBuilder Members
System.Data.SqlServerCe Namespace