SqlDataAdapter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一組資料命令和資料庫連線,用來填入 DataSet 並更新 SQL Server 資料庫。 此類別無法獲得繼承。
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable, System::Data::IDbDataAdapter
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, ICloneable
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter
public sealed class SqlDataAdapter : System.Data.Common.DbDataAdapter, ICloneable, System.Data.IDbDataAdapter
type SqlDataAdapter = class
inherit DbDataAdapter
interface IDbDataAdapter
interface IDataAdapter
interface ICloneable
type SqlDataAdapter = class
inherit DbDataAdapter
interface IDataAdapter
interface IDbDataAdapter
interface ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable, IDbDataAdapter
- 繼承
- 實作
範例
下列範例會 SqlCommand 使用 、 SqlDataAdapter 和 SqlConnection 來選取資料庫中的記錄,並使用選取的資料列填 DataSet 入 。 接著會傳回填滿 DataSet 。 若要達成此目的,方法會傳遞初始化 DataSet 的 、連接字串,以及 Transact-SQL SELECT 語句的查詢字串。
private static DataSet SelectRows(DataSet dataset,
string connectionString,string queryString)
{
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(
queryString, connection);
adapter.Fill(dataset);
return dataset;
}
}
Public Function SelectRows( _
ByVal dataSet As DataSet, ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Using connection As New SqlConnection(connectionString)
Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = New SqlCommand( _
queryString, connection)
adapter.Fill(dataSet)
Return dataSet
End Using
End Function
備註
做 SqlDataAdapter 為 與 SQL Server 之間的 DataSet 橋接器,用於擷取和儲存資料。 會 SqlDataAdapter 透過對應 Fill 來提供此橋接器,其會變更 中的資料 DataSet 以符合資料來源中的資料,以及 Update ,它會使用適當的 Transact-SQL 語句,針對資料來源變更資料來源中的資料以符合 DataSet 中的資料。 更新會依資料列執行。 針對每個插入、修改和刪除的資料列, Update 方法會決定在 (、 Update
或 Delete
) 上 Insert
執行的變更類型。 視變更類型而定, Insert
、 Update
或 Delete
命令範本會執行 以將修改的資料列傳播至資料來源。 SqlDataAdapter當 填滿 DataSet 時,如果傳回的資料不存在,它會為傳回的資料建立必要的資料表和資料行。 不過,除非 屬性設定 AddWithKey 為 ,否則 MissingSchemaAction 主鍵資訊不會包含在隱含建立的架構中。 您也可以先 SqlDataAdapter 建立 的 DataSet 架構,包括主鍵資訊,再使用 FillSchema
填入資料。 如需詳細資訊,請參閱 將現有條件約束新增至資料集。
SqlDataAdapter會與 搭配 SqlConnection 使用 , SqlCommand 以在連線至SQL Server資料庫時提升效能。
注意
如果您要使用 SQL Server 預存程序搭配 DataAdapter
來編輯或刪除資料,請務必不要在預存程序定義中使用 SET NOCOUNT ON。 因為這樣會讓傳回的受影響資料列計數成為零,而 DataAdapter
會將它解譯為並行衝突。 在此事件中,系統會擲回 DBConcurrencyException。
SqlDataAdapter也包含 SelectCommand 、 InsertCommand 、 DeleteCommand 、 UpdateCommand 和 TableMappings 屬性,以協助載入和更新資料。
建立 的 SqlDataAdapter 實例時,讀取/寫入屬性會設定為初始值。 如需這些值的清單,請參閱建 SqlDataAdapter 構函式。
InsertCommand、 DeleteCommand 和 UpdateCommand 是一般範本,會透過參數機制自動填入每個修改資料列的個別值。
針對您傳播至 上 Update 資料來源的每個資料行,應該將 參數加入 InsertCommand
、 UpdateCommand
或 DeleteCommand
。 物件的 SourceColumn 屬性 DbParameter 應該設定為數據行的名稱。 此設定表示參數的值不是手動設定,而是取自目前處理資料列中的特定資料行。
注意
InvalidOperationException如果 Fill 呼叫 方法,而且資料表包含用戶端電腦上無法使用的使用者定義型別,就會發生 。 如需詳細資訊,請參閱 CLR 使用者定義型別。
建構函式
SqlDataAdapter() |
初始化 SqlDataAdapter 類別的新執行個體。 |
SqlDataAdapter(SqlCommand) |
使用指定 SqlDataAdapter 做為 SqlCommand 屬性,初始化 SelectCommand 類別的新執行個體。 |
SqlDataAdapter(String, SqlConnection) |
使用 SqlDataAdapter 和 SelectCommand 物件,初始化 SqlConnection 類別的新執行個體。 |
SqlDataAdapter(String, String) |
使用 SqlDataAdapter 和連接字串,初始化 SelectCommand 類別的新執行個體。 |
欄位
DefaultSourceTableName |
資料表對應之 DataAdapter 物件所使用的預設名稱。 (繼承來源 DbDataAdapter) |
屬性
AcceptChangesDuringFill |
取得或設定值,指出在任何一種 Fill 作業期間,當 DataRow 新增至 DataTable 之後,是否要在其上呼叫 AcceptChanges()。 (繼承來源 DataAdapter) |
AcceptChangesDuringUpdate |
取得或設定在 AcceptChanges() 期間是否呼叫 Update(DataSet)。 (繼承來源 DataAdapter) |
CanRaiseEvents |
取得值,指出元件是否能引發事件。 (繼承來源 Component) |
Container |
取得包含 IContainer 的 Component。 (繼承來源 Component) |
ContinueUpdateOnError |
取得或設定數值,指定當資料列更新期間發生錯誤時,是否產生例外狀況。 (繼承來源 DataAdapter) |
DeleteCommand |
取得或設定要從資料集刪除資料錄的 Transact-SQL 陳述式或預存程序。 |
DesignMode |
取得值,指出 Component 目前是否處於設計模式。 (繼承來源 Component) |
Events |
取得附加在這個 Component 上的事件處理常式清單。 (繼承來源 Component) |
FillCommandBehavior |
取得或設定用來填入資料配接器 (Adapter) 之命令的行為。 (繼承來源 DbDataAdapter) |
FillLoadOption |
取得或設定 LoadOption,決定配接器如何從 DataTable 填入 DbDataReader。 (繼承來源 DataAdapter) |
InsertCommand |
取得或設定要將新資料錄插入至資料來源的 Transact-SQL 陳述式或預存程序。 |
MissingMappingAction |
判斷在傳入的資料不具有相符的資料表或資料行時要採取的動作。 (繼承來源 DataAdapter) |
MissingSchemaAction |
判斷在現有 DataSet 結構描述 (Schema) 與傳入的資料不相符時要採取的動作。 (繼承來源 DataAdapter) |
ReturnProviderSpecificTypes |
取得或設定 |
SelectCommand |
取得或設定用來在資料來源中選取資料錄的 Transact-SQL 陳述式或預存程序。 |
Site | (繼承來源 Component) |
TableMappings |
取得集合,這個集合提供來源資料表與 DataTable 之間的主要對應。 (繼承來源 DataAdapter) |
UpdateBatchSize |
取得或設定每一次來回存取伺服器時所處理的資料列數目。 |
UpdateBatchSize |
取得或設定值,其啟用或停用批次處理支援,並指定可於批次中執行的命令數目。 (繼承來源 DbDataAdapter) |
UpdateCommand |
取得或設定用來在資料來源中更新資料錄的 SQL 陳述式或預存程序。 |
方法
事件
Disposed |
當 Dispose() 方法的呼叫處置元件時,就會發生。 (繼承來源 Component) |
FillError |
當填入作業期間發生錯誤時傳回。 (繼承來源 DbDataAdapter) |
RowUpdated |
發生在已經針對資料來源執行命令後的 Update(DataSet) 期間。 嘗試進行更新,因此引發了事件。 |
RowUpdating |
發生在已經針對資料來源執行命令前的 Update(DataSet) 期間。 嘗試進行更新,因此引發了事件。 |
明確介面實作
ICloneable.Clone() |
如需這個成員的說明,請參閱 Clone()。 |
IDataAdapter.TableMappings |
取得集合,指出來源資料表如何對應至資料集資料表。 (繼承來源 DataAdapter) |
IDbDataAdapter.DeleteCommand |
如需這個成員的說明,請參閱 DeleteCommand。 |
IDbDataAdapter.InsertCommand |
如需這個成員的說明,請參閱 InsertCommand。 |
IDbDataAdapter.SelectCommand |
如需這個成員的說明,請參閱 SelectCommand。 |
IDbDataAdapter.UpdateCommand |
如需這個成員的說明,請參閱 UpdateCommand。 |
適用於
另請參閱
- DataAdapter 和 DataReader
- 操作資料 (ADO.NET)
- ADO.NET 概觀 \(部分機器翻譯\)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應