ADO.NET是在.NET Framework裡負責資料存取的類別庫集,由連線資料來源connected data source(連線模式)以及離線資料模型disconnected data model(離線模式),兩種模式各有優缺點,共通點是一開始都必須建立與資料庫的連線。
在選擇連接資料庫的模式時,必須謹慎考量使用狀況,因為兩種模式的實作方法與適合場合不一樣,日後要更改必須要全部重寫。
連線模式
直接跟資料庫進行連線,可以直接看到資料庫的最新紀錄 主要依靠DataReader
適合使用環境:
- 操作頻率少
- 使用時間很短暫
優點:
- 看的到資料庫的最新資料
缺點:
- 對連線需求占用數比較高
特性:
- 手動連線、斷線(因此要注意Close和Dispose,也有語法糖using可以用)
SqlConnection
對資料庫連線需要透過SqlConnection類別,通常會把連線字串放在appconfig檔(加密),或是電腦裡的環境變數。
SqlCommand
程式對資料庫下T-SQL敘述或預存程序時要透過SqlCommand類別來使用
SqlParameter
SqlCommand裡面的敘述如果直接用字串相接的方式(意指直接把使用者填入的資料寫入指料庫),會非常危險,因為不曉得使用者是不是有惡意攻擊,所以有了SqlParameter可以在寫入資料庫之前先透過SqlParameter過濾我們限縮的字元還有想要的型別,要注意的是如果型別錯誤會有例外錯誤。
離線模式
DataSet
DataSet(資料集)是從資料來源撈出來的記憶體內部快取,是ADO .NET主要架構的元件之一,裡面包含了物件的集合DataTable,可以理解成ADO .NET DataSet 是記憶體駐留型資料表示法,獨立於資料來源,而且還有一致性的關聯式結構。
DateSet的資料與資料來源無關,而DateSet與資料來源之間的溝通橋樑就是 DataAdapter,透過DataAdapter的方法進行基本的CRUD等等。
這邊好像還有序列化要補充,待整理
DataTable
DataTable在DateSet裡面,所以他只是記憶體中的一個資料表,可以使用DataRelation進行關聯式操作。
DataView
負責篩選排序搜尋
這邊特別提到了父子關係,還沒搞清楚,待問老師 MSDN DataRealation
DataAdapter
使用DataAdapter提取資料時,因為要存取資料庫、尋找資料和處理資料,所以非常消耗時間,而且在提取時所有在伺服器上的資料列都會被鎖定,因此建議使用分段讀取。
DataAdapter是程式和資料庫之間互動的橋樑,兩者之間所有的操作都會經過DataAdapter [MSDN DataAdapter]
適合使用環境:
- 操作頻率高
- 使用時間很久
優點:
- 對連線需求占用率較低
缺點:
- 不能即時看到資料庫
特性:
- 自動連線、自動斷線