SqlDataAdapter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一組資料命令和資料庫連線,用來填入 DataSet 並更新 SQL Server 資料庫。 此類別無法獲得繼承。
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable, System::Data::IDbDataAdapter
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter
public sealed class SqlDataAdapter : 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
type SqlDataAdapter = class
inherit DbDataAdapter
interface IDbDataAdapter
interface IDataAdapter
interface ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable, IDbDataAdapter
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
- 繼承
- 實作
範例
下列範例會 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 方法會決定已對它執行的變更類型, (Insert
、 Update
或 Delete
) 。 視變更類型而定, Insert
、 Update
或 Delete
命令範本會執行 以將修改的數據列傳播至數據源。
SqlDataAdapter當 填滿 DataSet時,如果傳回的數據不存在,它會為傳回的數據建立必要的數據表和數據行。 不過,除非 MissingSchemaAction 屬性設定為 AddWithKey,否則不會在隱含建立的架構中包含主鍵資訊。 您也可以先 SqlDataAdapter 建立的 DataSet架構,包括主鍵資訊,再使用 FillSchema
填入數據。 如需詳細資訊,請參閱 將現有的條件約束新增至數據集。
SqlDataAdapter會與 和 SqlCommand 搭配SqlConnection使用,以在連接到 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 概觀 \(部分機器翻譯\)