SqlDataAdapter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一組資料命令和資料庫連線,用來填入 DataSet 並更新 SQL Server 資料庫。 此類別無法獲得繼承。
public ref class SqlDataAdapter sealed : System::Data::Common::DbDataAdapter, ICloneable, System::Data::IDataAdapter, 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.IDataAdapter, 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
type SqlDataAdapter = class
inherit DbDataAdapter
interface IDataAdapter
interface IDbDataAdapter
interface ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable, IDataAdapter, IDbDataAdapter
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
Implements ICloneable
Public NotInheritable Class SqlDataAdapter
Inherits DbDataAdapter
- 繼承
-
SqlDataAdapter
- 實作
範例
下列範例會 SqlCommand 使用 、 SqlDataAdapter 和 SqlConnection 從資料庫選取記錄,並使用選取的資料列填入 DataSet 。 然後會傳回填滿 DataSet 的 。 為了達成此目的,方法會傳遞初始化 DataSet 的 、連接字串,以及 Transact-SQL SELECT 語句的查詢字串。
using Microsoft.Data.SqlClient;
using System.Xml;
using System.Data.Common;
using System.Windows.Forms;
public class Form1 : Form
{
protected DataSet DataSet1;
protected DataGrid dataGrid1;
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;
}
}
}
備註
當 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會與 和 搭配 SqlConnectionSqlCommand 使用,以在連接到 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 類別的新執行個體。 |
屬性
DeleteCommand |
取得或設定要從資料集刪除資料錄的 Transact-SQL 陳述式或預存程序。 |
InsertCommand |
取得或設定要將新資料錄插入至資料來源的 Transact-SQL 陳述式或預存程序。 |
SelectCommand |
取得或設定用來在資料來源中選取資料錄的 Transact-SQL 陳述式或預存程序。 |
UpdateBatchSize |
取得或設定每一次來回存取伺服器時所處理的資料列數目。 |
UpdateCommand |
取得或設定用來在資料來源中更新資料錄的 SQL 陳述式或預存程序。 |
事件
RowUpdated |
發生在已經針對資料來源執行命令後的 Update(DataSet) 期間。 嘗試進行更新,因此引發了事件。 |
RowUpdating |
發生在已經針對資料來源執行命令前的 Update(DataSet) 期間。 嘗試進行更新,因此引發了事件。 |
明確介面實作
ICloneable.Clone() |
如需這個成員的說明,請參閱 Clone()。 |
IDbDataAdapter.DeleteCommand |
如需這個成員的說明,請參閱 DeleteCommand。 |
IDbDataAdapter.InsertCommand |
如需這個成員的說明,請參閱 InsertCommand。 |
IDbDataAdapter.SelectCommand |
如需這個成員的說明,請參閱 SelectCommand。 |
IDbDataAdapter.UpdateCommand |
如需這個成員的說明,請參閱 UpdateCommand。 |