SqlDataAdapter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一組資料命令和資料庫連線,用來填入 DataSet 並更新 SQL Server 資料庫。 此類別無法獲得繼承。
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable
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, 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
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 概觀 \(部分機器翻譯\)