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 指定要由 SqlCeCommandBuilder 使用的 ConflictOption。 (覆寫 DbCommandBuilder.ConflictOption。)
公用屬性 Container (繼承自 Component)
公用屬性 DataAdapter 取得或設定會為其自動產生 SQL 陳述式的 SqlCeDataAdapter 物件。
受保護的屬性 DesignMode (繼承自 Component)
受保護的屬性 Events (繼承自 Component)
公用屬性 QuotePrefix 取得或設定開始字元 (一個或多個),當指定名稱包含空白或保留 Token 之類字元的 SQL Server 資料庫物件 (如資料表或資料行) 時,就可以使用。 (覆寫 DbCommandBuilder.QuotePrefix。)
公用屬性 QuoteSuffix 取得或設定結束字元 (一個或多個),當指定名稱包含空白或保留 Token 之類字元的 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 失去關聯,並且不再使用所產生的命令。

範例

下列範例會使用 SqlCeCommandSqlCeDataAdapterSqlCeConnection,從資料來源選取資料列。此範例會傳遞連接字串 (Connection String)、查詢字串,以及是資料庫資料表名稱的字串。然後再建立 SqlCeCommandBuilder。資料配接器 (Adapter) 接著會使用該命令產生器 (Builder),以更新區域資料庫中修改的 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 中為 Shared) 成員都是執行緒安全的。並不是所有的執行個體成員都保證可以用於所有的執行緒。

請參閱

參考

System.Data.SqlServerCe 命名空間