SqlCommandBuilder 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
自動產生單一資料表命令,以用來讓對 DataSet 進行的變更與相關聯的 SQL Server 資料庫一致。 此類別無法獲得繼承。
public ref class SqlCommandBuilder sealed : System::ComponentModel::Component
public ref class SqlCommandBuilder sealed : System::Data::Common::DbCommandBuilder
public sealed class SqlCommandBuilder : System.ComponentModel.Component
public sealed class SqlCommandBuilder : System.Data.Common.DbCommandBuilder
type SqlCommandBuilder = class
inherit Component
type SqlCommandBuilder = class
inherit DbCommandBuilder
Public NotInheritable Class SqlCommandBuilder
Inherits Component
Public NotInheritable Class SqlCommandBuilder
Inherits DbCommandBuilder
- 繼承
- 繼承
範例
下列範例會 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。 您一次只能將一個 SqlDataAdapter 或 SqlCommandBuilder 物件彼此建立關聯。
若要產生 INSERT、UPDATE 或 DELETE 語句,會 SqlCommandBuilder 使用 SelectCommand 屬性自動擷取一組必要的元數據。 如果您在擷取元數據之後變更 SelectCommand ,例如在第一次更新之後,您應該呼叫 RefreshSchema 方法來更新元數據。
SelectCommand
還必須傳回至少一個主索引鍵或唯一的資料行。 如果沒有,則會產生 InvalidOperation 例外狀況,而且不會產生命令。
SqlCommandBuilder也會使用 所參考的ConnectionSelectCommand、 CommandTimeout和 Transaction 屬性。 如果使用者修改了其中一或多個屬性,或SelectCommand本身被取代,則應該呼叫 RefreshSchema 。 否則 InsertCommand, UpdateCommand和 DeleteCommand 屬性會保留其先前的值。
如果您呼叫 Dispose,則會 SqlCommandBuilder 與 SqlDataAdapter解除關聯,而且不再使用產生的命令。
建構函式
SqlCommandBuilder() |
初始化 SqlCommandBuilder 類別的新執行個體。 |
SqlCommandBuilder(SqlDataAdapter) |
使用關聯的 SqlCommandBuilder 物件來初始化 SqlDataAdapter 類別的新執行個體。 |
屬性
CanRaiseEvents |
取得值,指出元件是否能引發事件。 (繼承來源 Component) |
CatalogLocation |
取得或設定 SqlCommandBuilder 類別執行個體的 CatalogLocation。 |
CatalogSeparator |
取得或設定作為 SqlCommandBuilder 類別執行個體之目錄分隔符號使用的字串。 |
ConflictOption |
指定 ConflictOption 所要使用的 DbCommandBuilder。 (繼承來源 DbCommandBuilder) |
Container |
取得包含 IContainer 的 Component。 (繼承來源 Component) |
DataAdapter |
取得或設定會自動產生 Transact-SQL 陳述式的 SqlDataAdapter 物件。 |
DesignMode |
取得值,指出 Component 目前是否處於設計模式。 (繼承來源 Component) |
Events |
取得附加在這個 Component 上的事件處理常式清單。 (繼承來源 Component) |
QuotePrefix |
取得或設定一或多個開始字元,當指定其名稱包含空格或保留語彙基元 (Token) 之類字元的 SQL Server 資料庫物件 (例如資料表或資料行) 時,就可以使用。 |
QuoteSuffix |
取得或設定一或多個結束字元,當指定其名稱包含空格或語彙基元之類字元的 SQL Server 資料庫物件 (例如資料表或資料行) 時,就可以使用。 |
SchemaSeparator |
取得或設定用於結構描述識別項和任何其他識別項間之分隔符號的字元。 |
SetAllValues |
指定更新陳述式中包含所有資料行值或只包含已變更的資料行值。 (繼承來源 DbCommandBuilder) |
Site | (繼承來源 Component) |
方法
事件
Disposed |
當 Dispose() 方法的呼叫處置元件時,就會發生。 (繼承來源 Component) |
適用於
另請參閱
- 在 ADO.NET 中傳送和修改資料
- SQL Server and ADO.NET (SQL Server 和 ADO.NET)
- ADO.NET 概觀 \(部分機器翻譯\)