SqlCommandBuilder 類別

定義

自動產生單一資料表命令,以用來讓對 DataSet 進行的變更與相關聯的 SQL Server 資料庫一致。 此類別無法獲得繼承。

public ref class SqlCommandBuilder sealed : System::Data::Common::DbCommandBuilder
public ref class SqlCommandBuilder sealed : System::ComponentModel::Component
public sealed class SqlCommandBuilder : System.Data.Common.DbCommandBuilder
public sealed class SqlCommandBuilder : System.ComponentModel.Component
type SqlCommandBuilder = class
    inherit DbCommandBuilder
type SqlCommandBuilder = class
    inherit Component
Public NotInheritable Class SqlCommandBuilder
Inherits DbCommandBuilder
Public NotInheritable Class SqlCommandBuilder
Inherits Component
繼承
繼承
SqlCommandBuilder

範例

下列範例會 SqlCommand使用 和 SqlDataAdapterSqlConnection,從數據源中選取數據列。 此範例會傳遞 連接字串、Transact-SQL SELECT 語句的查詢字串,以及資料庫數據表名稱的字串。 然後,此範例會 SqlCommandBuilder建立 。

public static DataSet SelectSqlRows(string connectionString,
    string queryString, string tableName)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(queryString, connection);
        SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

        connection.Open();

        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet, tableName);

        //code to modify data in DataSet here

        builder.GetUpdateCommand();

        //Without the SqlCommandBuilder this line would fail
        adapter.Update(dataSet, tableName);

        return dataSet;
    }
}
Private Function SelectSqlRows(ByVal connectionString As String, _
    ByVal queryString As String, ByVal tableName As String) As DataSet

    Using connection As New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter()
        adapter.SelectCommand = New SqlCommand(queryString, connection)
        Dim builder As New SqlCommandBuilder(adapter)

        connection.Open()

        Dim dataSet As New DataSet()
        adapter.Fill(dataSet, tableName)

        ' Code to modify data in DataSet here 

        builder.GetUpdateCommand()

        ' Without the SqlCommandBuilder this line would fail.
        adapter.Update(dataSet, tableName)

        Return dataSet
    End Using
End Function

備註

SqlDataAdapter不會自動產生與相關聯實例 SQL Server的變更DataSet協調所需的 Transact-SQL 語句。 不過,如果您設定 SelectCommand 的 屬性,您可以建立 對象來自動產生單一SqlCommandBuilder數據表更新的 SqlDataAdapterTransact-SQL 語句。 然後,您未設定的任何其他 Transact-SQL 語句都會由 SqlCommandBuilder產生。

每當您設定 DataAdapter 屬性時,會將SqlCommandBuilder本身註冊為事件的接聽程式RowUpdating。 您一次只能將一個 SqlDataAdapterSqlCommandBuilder 物件彼此建立關聯。

若要產生 INSERT、UPDATE 或 DELETE 語句,會 SqlCommandBuilder 使用 SelectCommand 屬性自動擷取一組必要的元數據。 如果您在擷取元數據之後變更 SelectCommand ,例如在第一次更新之後,您應該呼叫 RefreshSchema 方法來更新元數據。

SelectCommand 還必須傳回至少一個主索引鍵或唯一的資料行。 如果沒有,則會產生 InvalidOperation 例外狀況,而且不會產生命令。

SqlCommandBuilder也會使用 所參考的ConnectionSelectCommandCommandTimeoutTransaction 屬性。 如果使用者修改了其中一或多個屬性,或SelectCommand本身被取代,則應該呼叫 RefreshSchema 。 否則 InsertCommandUpdateCommandDeleteCommand 屬性會保留其先前的值。

如果您呼叫 Dispose,則會 SqlCommandBuilderSqlDataAdapter解除關聯,而且不再使用產生的命令。

建構函式

SqlCommandBuilder()

初始化 SqlCommandBuilder 類別的新執行個體。

SqlCommandBuilder(SqlDataAdapter)

使用關聯的 SqlCommandBuilder 物件來初始化 SqlDataAdapter 類別的新執行個體。

屬性

CanRaiseEvents

取得值,指出元件是否能引發事件。

(繼承來源 Component)
CatalogLocation

取得或設定 SqlCommandBuilder 類別執行個體的 CatalogLocation

CatalogSeparator

取得或設定作為 SqlCommandBuilder 類別執行個體之目錄分隔符號使用的字串。

ConflictOption

指定 ConflictOption 所要使用的 DbCommandBuilder

(繼承來源 DbCommandBuilder)
Container

取得包含 IContainerComponent

(繼承來源 Component)
DataAdapter

取得或設定會自動產生 Transact-SQL 陳述式的 SqlDataAdapter 物件。

DesignMode

取得值,指出 Component 目前是否處於設計模式。

(繼承來源 Component)
Events

取得附加在這個 Component 上的事件處理常式清單。

(繼承來源 Component)
QuotePrefix

取得或設定一或多個開始字元,當指定其名稱包含空格或保留語彙基元 (Token) 之類字元的 SQL Server 資料庫物件 (例如資料表或資料行) 時,就可以使用。

QuoteSuffix

取得或設定一或多個結束字元,當指定其名稱包含空格或語彙基元之類字元的 SQL Server 資料庫物件 (例如資料表或資料行) 時,就可以使用。

SchemaSeparator

取得或設定用於結構描述識別項和任何其他識別項間之分隔符號的字元。

SetAllValues

指定更新陳述式中包含所有資料行值或只包含已變更的資料行值。

(繼承來源 DbCommandBuilder)
Site

取得或設定 ComponentISite

(繼承來源 Component)

方法

ApplyParameterInfo(DbParameter, DataRow, StatementType, Boolean)

允許 DbCommandBuilder 類別的提供者實作處理其他參數屬性。

(繼承來源 DbCommandBuilder)
CreateObjRef(Type)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
DeriveParameters(SqlCommand)

SqlCommand 中指定的預存程序 (Stored Procedure) 擷取參數資訊,並填入 (Populate) 指定 Parameters 物件的 SqlCommand 集合。

Dispose()

釋放 Component 所使用的所有資源。

(繼承來源 Component)
Dispose(Boolean)

釋放 DbCommandBuilder 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 DbCommandBuilder)
Dispose(Boolean)

釋放 Component 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 Component)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetDeleteCommand()

取得在資料庫上執行刪除時所需之自動產生的 SqlCommand 物件。

GetDeleteCommand(Boolean)

取得在資料庫上執行刪除時所需之自動產生的 SqlCommand 物件。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetInsertCommand()

取得在資料庫上執行插入時所需之自動產生的 SqlCommand 物件。

GetInsertCommand(Boolean)

取得在資料庫上執行插入時所需之自動產生的 SqlCommand 物件。

GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetParameterName(Int32)

傳回指定參數的名稱,格式為 @p#。 建置自訂命令產生器時使用。

(繼承來源 DbCommandBuilder)
GetParameterName(String)

已提供部分參數名稱時,傳回完整參數名稱。

(繼承來源 DbCommandBuilder)
GetParameterPlaceholder(Int32)

傳回相關 SQL 陳述式中參數的預留位置。

(繼承來源 DbCommandBuilder)
GetSchemaTable(DbCommand)

傳回 DbCommandBuilder 的結構描述資料表。

(繼承來源 DbCommandBuilder)
GetService(Type)

傳回表示 Component 或其 Container 所提供之服務的物件。

(繼承來源 Component)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
GetUpdateCommand()

取得在資料庫上執行更新時所需之自動產生的 SqlCommand 物件。

GetUpdateCommand(Boolean)

取得在資料庫上執行更新時所需之自動產生的 SqlCommand 物件。

InitializeCommand(DbCommand)

重設 CommandTimeout 上的 TransactionCommandTypeUpdateRowSourceDbCommand 屬性。

(繼承來源 DbCommandBuilder)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個執行個體的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 物件的淺層複本。

(繼承來源 MarshalByRefObject)
QuoteIdentifier(String)

在正確資料庫目錄情況下提供不具引號的識別項時,會傳回該識別項具引號的正確格式。 這包括正確地逸出識別項中的任何內嵌引號。

RefreshSchema()

清除與此命令產生器相關聯的命令。

RefreshSchema()

清除與這個 DbCommandBuilder 關聯的命令。

(繼承來源 DbCommandBuilder)
RowUpdatingHandler(RowUpdatingEventArgs)

加入 RowUpdating 事件的事件處理常式。

(繼承來源 DbCommandBuilder)
SetRowUpdatingHandler(DbDataAdapter)

註冊 DbCommandBuilder,以處理 RowUpdatingDbDataAdapter 事件。

(繼承來源 DbCommandBuilder)
ToString()

傳回任何包含 Component 名稱的 String。 不應覆寫此方法。

(繼承來源 Component)
UnquoteIdentifier(String)

在有提供引號識別項時,會傳回該識別項不具引號的正確格式。 這包括正確包含識別項中的任何內嵌引號。

事件

Disposed

Dispose() 方法的呼叫處置元件時,就會發生。

(繼承來源 Component)

適用於

另請參閱