SqlDataAdapter 是 ADO.NET 中連接 DataSet 與 SQL Server 資料庫的橋樑,封裝了 SelectCommand、InsertCommand、UpdateCommand、DeleteCommand 四大命令,實現資料的離線存取與批次更新。
Fill() 執行完畢後,DataSet 與資料庫連線即斷開,適合高併發場景。TableMappings 可將資料庫表名映射為自訂 DataTable 名稱。// 1. SQL 字串 + 連線字串
var da = new SqlDataAdapter("SELECT * FROM Customers", connStr);
// 2. SQL 字串 + SqlConnection 物件
var cn = new SqlConnection(connStr);
var da = new SqlDataAdapter("SELECT * FROM Customers", cn);
// 3. SqlCommand 物件(推薦,便於參數化)
var cmd = new SqlCommand("SELECT * FROM Customers WHERE City = @City", cn);
cmd.Parameters.AddWithValue("@City", "London");
var da = new SqlDataAdapter(cmd);
| 方法簽名 | 用途 |
|---|---|
Fill(DataSet) | 填充預設名為 "Table" 的 DataTable |
Fill(DataSet, "TableName") | 指定 DataTable 名稱 |
Fill(DataTable) | 直接填充 DataTable |
Fill(DataSet, startRecord, maxRecords, "TableName") | 分頁載入(僅 SQL Server 支援) |
// 手動控制連線,適合同一連線多次 Fill cn.Open(); daCustomers.Fill(ds); daOrders.Fill(ds); cn.Close();
SelectCommand、UpdateCommand、TableMappings、ContinueUpdateOnErrorFill()、FillSchema()、Update()、GetFillParameters()RowUpdating、RowUpdated、FillError — 可在更新前後攔截邏輯或處理填充異常。繼承自 DbDataAdapter 的 Fill 方法提供 9 種多載,支援 IDataReader、IDbCommand、CommandBehavior 等進階參數,滿足不同資料來源與載入策略需求。