SqlCeCommandBuilder 类

提供一种方法,以自动生成用于协调对 DataSet 所做的更改和关联数据库的单表命令。无法继承此类。

继承层次结构

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

命名空间:  System.Data.SqlServerCe
程序集:  System.Data.SqlServerCe(在 System.Data.SqlServerCe.dll 中)

语法

声明
Public NotInheritable Class SqlCeCommandBuilder _
    Inherits DbCommandBuilder
用法
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

SqlCeCommandBuilder 类型公开以下成员。

构造函数

  名称 说明
公共方法 SqlCeCommandBuilder() 初始化 SqlCeCommandBuilder 类的一个新实例。
公共方法 SqlCeCommandBuilder(SqlCeDataAdapter) 使用关联的 SqlCeDataAdapterSqlCeCommand 对象初始化 SqlCeCommandBuilder 类的新实例。

页首

属性

  名称 说明
受保护属性 CanRaiseEvents (继承自 Component
公共属性 CatalogLocation SQL Server Compact 不支持。 (覆盖 DbCommandBuilder.CatalogLocation。)
公共属性 CatalogSeparator SQL Server Compact 不支持。 (覆盖 DbCommandBuilder.CatalogSeparator。)
公共属性 ConflictOption 指定哪个 ConflictOption 将由 SqlCeCommandBuilder 使用。 (覆盖 DbCommandBuilder.ConflictOption。)
公共属性 Container (继承自 Component
公共属性 DataAdapter 获取或设置一个为其自动生成 SQL 语句的 SqlCeDataAdapter 对象。
受保护属性 DesignMode (继承自 Component
受保护属性 Events (继承自 Component
公共属性 QuotePrefix 获取或设置指定其名称包含空格或保留标记等字符的 SQL Server 数据库对象(例如,表或列)时使用的开始字符。 (覆盖 DbCommandBuilder.QuotePrefix。)
公共属性 QuoteSuffix 获取或设置指定其名称包含空格或保留标记等字符的 SQL Server 数据库对象(例如,表或列)时使用的结束字符。 (覆盖 DbCommandBuilder.QuoteSuffix。)
公共属性 SchemaSeparator SQL Server Compact 不支持。 (覆盖 DbCommandBuilder.SchemaSeparator。)
公共属性 SetAllValues (继承自 DbCommandBuilder
公共属性 Site (继承自 Component

页首

方法

  名称 说明
受保护方法 ApplyParameterInfo (继承自 DbCommandBuilder
公共方法 CreateObjRef (继承自 MarshalByRefObject
公共方法 Dispose() (继承自 Component
受保护方法 Dispose(Boolean) (继承自 DbCommandBuilder
公共方法 Equals (继承自 Object
受保护方法 Finalize (继承自 Component
公共方法 GetDeleteCommand() 获取在应用程序对 SqlCeDataAdapter 调用 Update 时对数据库执行删除操作所需要的、自动生成的 SqlCeCommand 对象。
公共方法 GetDeleteCommand(Boolean) (继承自 DbCommandBuilder
公共方法 GetHashCode (继承自 Object
公共方法 GetInsertCommand() 获取在应用程序对 SqlCeDataAdapter 调用 Update 时对数据库执行插入操作所需要的、自动生成的 SqlCeCommand 对象。
公共方法 GetInsertCommand(Boolean) (继承自 DbCommandBuilder
公共方法 GetLifetimeService (继承自 MarshalByRefObject
受保护方法 GetParameterName(Int32) (继承自 DbCommandBuilder
受保护方法 GetParameterName(String) (继承自 DbCommandBuilder
受保护方法 GetParameterPlaceholder (继承自 DbCommandBuilder
受保护方法 GetSchemaTable (继承自 DbCommandBuilder
受保护方法 GetService (继承自 Component
公共方法 GetType (继承自 Object
公共方法 GetUpdateCommand() 获取在应用程序对 SqlCeDataAdapter 调用 Update 时对数据库执行更新操作所需要的、自动生成的 SqlCeCommand 对象。
公共方法 GetUpdateCommand(Boolean) (继承自 DbCommandBuilder
受保护方法 InitializeCommand (继承自 DbCommandBuilder
公共方法 InitializeLifetimeService (继承自 MarshalByRefObject
受保护方法 MemberwiseClone() (继承自 Object
受保护方法 MemberwiseClone(Boolean) (继承自 MarshalByRefObject
公共方法 QuoteIdentifier 返回具有正确引号格式的指定标识符。 (覆盖 DbCommandBuilder.QuoteIdentifier(String)。)
公共方法 RefreshSchema (继承自 DbCommandBuilder
受保护方法 RowUpdatingHandler (继承自 DbCommandBuilder
受保护方法 SetRowUpdatingHandler (继承自 DbCommandBuilder
公共方法 ToString (继承自 Component
公共方法 UnquoteIdentifier 返回具有正确无引号格式的指定标识符。 (覆盖 DbCommandBuilder.UnquoteIdentifier(String)。)

页首

事件

  名称 说明
公共事件 Disposed (继承自 Component

页首

注释

但是,如果设置了 SelectCommand 属性,则可以创建一个 SqlCeCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。

每当设置了 DataAdapter 属性,SqlCeCommandBuilder 就将其本身注册为 RowUpdating 事件的侦听器。一次只能将一个 SqlCeDataAdapter 与一个 SqlCeCommandBuilder 对象互相关联。

为了生成 INSERT、UPDATE 或 DELETE 语句,SqlCeCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索元数据后(例如在第一次更新后)更改 SelectCommand,则应调用 RefreshSchema() 方法来更新元数据。

SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回,就会产生 InvalidOperation 异常,并且不生成命令。

SqlCeCommandBuilder 还使用由 SelectCommand 引用的 ConnectionTransaction 属性。如果修改了这些属性中的任何一个或者替换了 SelectCommand 本身,则您应调用 RefreshSchema()。否则,InsertCommandUpdateCommandDeleteCommand 属性将保留它们以前的值。

如果调用 Dispose(),则会解除 SqlCeCommandBuilder 与 SqlCeDataAdapter 的关联,并且不再使用生成的命令。

示例

下面的示例使用 SqlCeCommand 以及 SqlCeDataAdapterSqlCeConnection 从数据源选择行。将传递给此示例一个连接字符串、一个查询字符串和一个表示数据库表名称的字符串。然后该示例创建一个 SqlCeCommandBuilder。然后,数据适配器使用此命令生成器更新本地数据库中已修改的 DataSet。

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

线程安全

此类型的任何公共静态(在 Microsoft Visual Basic 中为共享)成员是线程安全的。不保证所有实例成员都对于线程安全的。

请参阅

参考

System.Data.SqlServerCe 命名空间