共用方式為


SqlCeCommandBuilder Class

提供自動產生單一資料表命令的方法,可用來協調對 DataSet 與相關的資料庫所做的變更。這個類別無法被繼承。

命名空間: System.Data.SqlServerCe
組件: System.Data.SqlServerCe (在 system.data.sqlserverce.dll)

語法

'宣告
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

備註

如果有設定 SelectCommand 屬性,則可以建立 SqlCeCommandBuilder 物件,以針對單一資料表更新自動產生 Transact-SQL 陳述式。

每當您設定 DataAdapter 屬性時,SqlCeCommandBuilder 會將本身登錄為 RowUpdating 事件的接聽程式。一次只能將一個 SqlCeDataAdapterSqlCeCommandBuilder 物件與彼此相關聯。

為了產生 INSERT、UPDATE 或 DELETE 陳述式,SqlCeCommandBuilder 會使用 SelectCommand 屬性來自動擷取必要的中繼資料集。如果在擷取中繼資料之後 (例如,在第一次更新之後) 變更 SelectCommand,則應該呼叫 RefreshSchema 方法來更新中繼資料。

SelectCommand 也必須至少傳回一個主索引鍵或唯一的資料行。如果兩者都不存在,便會產生 InvalidOperation 例外狀況,且不會產生命令。

SqlCeCommandBuilder 也會使用 SelectCommand 所參考的 ConnectionTransaction 屬性。如果修改了這其中任何屬性,或者取代了 SelectCommand 本身,則應該呼叫 RefreshSchema。否則,InsertCommandUpdateCommandDeleteCommand 屬性會保留之前的值。

如果呼叫 Dispose,則 SqlCeCommandBuilder 會和 SqlCeDataAdapter 失去關聯,並且不再使用所產生的命令。

繼承階層

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

範例

下列範例會使用 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) 此型別的成員具備執行緒安全。不保證任何執行個體成員安全執行緒。

平台

開發平台

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
版本資訊
.NET Framework 及 NET Compact Framework
支援於 3.5
.NET Framework
支援於 3.0
.NET Compact Framework 及 .Net Framework
支援於 2.0

另請參閱

參考

SqlCeCommandBuilder Members
System.Data.SqlServerCe Namespace