[ADO.NET] Sql如何使用 DataAdapter (一)
1.DataAdapter 類別 主要是用來將資料填入DataSet 類別或DataTable 類別,然後更新資料來源。
2.使用步驟
2-1.建立SqlConnection連線
2-2.建立SqlCommand類別
2-3.建立SqlDataAdapter類別
2-4.建立DataSet類別或DataTable類別
2-5.使用Fill方法載入
如下所示:資料庫仍是使用北風資料庫
string cs = "Data Source=WIN-83S5ZZ3CD3D\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True";
string qs = "SELECT * FROM Employees";
//1.SqlConnection
using (SqlConnection cn = new SqlConnection(cs))
{
//2.SqlCommand
using (SqlCommand cmd=new SqlCommand(qs,cn))
{
//3.SqlDataAdapter
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
//4.建立DataSet類別或DataTable類別
//使用Fill方法
//===========================================
}
}
}
3.使用Fill 方法 將資料填入DataSet 或DataTable ,多載方法如下。
法一:載入DataSet
法三:批次查詢載入兩個以上的DataTable
法五:增加效能,載入部份資料
5.DataAdapter載入DataSet時會檢查DataSet中條件約束,比如檢查Primary Key是否唯一,若要增進效能,在條件環境允許下,使用EnforceConstraints 屬性來決定是否遵循條件約束 (Constraint) 規則。
6.MissingSchemaAction 屬性可以控制DataAdapter取回的結構描述資訊,與DataSet結構描述資訊不符時所要採取的動作,如下程式所述,如果我們寫了兩次的Fill,我們會發現資料重覆了,若我們設定了結構描述資訊動作,就能採取一些動作。
AddWithKey範例如下,若沒有加AddWithKey動作,Fill兩次後會發生資料重複的情況,反之則無重複資料
7.若資料來源資料與目的地結構描述資訊不同,可以利用SQL陳述句,或用FillSchema 方法來建立彼此欄位的對應,FillSchema 方法多載如下。
SQL陳述句,下述語句是表示將EmployeeID對應到DataTable的ID、LastName 對應到DataTable的Name;當然這個方法是比較累的,需要手動建立對應的欄位(as)。
FillSchema 方法,這方法就比較便利了,不需要手動建立對應,將由SchemaType 列舉型別幫我們工作。
設定對應欄位後,我們可以發現加如結構描述動作的程式不再出現例外了。
8.TableMappings 屬性可以用來制作對照表。
由下圖所述,SchemaType.Mapped將"Employees"資料表對應到"員工資料表",並建立了名為"員工資料表"的DataTable
用迴圈觀察DataTable的TableName是否如上所述,觀察結果如下。
執行結果如下
範例下載:範例沒有使用太高深的技巧,如需使用的人,請自行解開註解。
續下篇 [ADO.NET] 如何使用 DataAdapter (二)
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET