ADO .NET筆記小結

Posted by Lynn on Friday, February 11, 2022

ADO.NET是在.NET Framework裡負責資料存取的類別庫集,由連線資料來源connected data source(連線模式)以及離線資料模型disconnected data model(離線模式),兩種模式各有優缺點,共通點是一開始都必須建立與資料庫的連線。

在選擇連接資料庫的模式時,必須謹慎考量使用狀況,因為兩種模式的實作方法與適合場合不一樣,日後要更改必須要全部重寫。

連線模式

直接跟資料庫進行連線,可以直接看到資料庫的最新紀錄 主要依靠DataReader

適合使用環境:

  1. 操作頻率少
  2. 使用時間很短暫

優點:

  • 看的到資料庫的最新資料

缺點:

  • 對連線需求占用數比較高

特性:

  • 手動連線、斷線(因此要注意Close和Dispose,也有語法糖using可以用)

SqlConnection

對資料庫連線需要透過SqlConnection類別,通常會把連線字串放在appconfig檔(加密),或是電腦裡的環境變數。

MSDN SqlConnection

SqlCommand

程式對資料庫下T-SQL敘述或預存程序時要透過SqlCommand類別來使用

MSDN SqlCommand

SqlParameter

SqlCommand裡面的敘述如果直接用字串相接的方式(意指直接把使用者填入的資料寫入指料庫),會非常危險,因為不曉得使用者是不是有惡意攻擊,所以有了SqlParameter可以在寫入資料庫之前先透過SqlParameter過濾我們限縮的字元還有想要的型別,要注意的是如果型別錯誤會有例外錯誤。

MSDN SqlParameter

離線模式

DataSet

DataSet(資料集)是從資料來源撈出來的記憶體內部快取,是ADO .NET主要架構的元件之一,裡面包含了物件的集合DataTable,可以理解成ADO .NET DataSet 是記憶體駐留型資料表示法,獨立於資料來源,而且還有一致性的關聯式結構。

DateSet的資料與資料來源無關,而DateSet與資料來源之間的溝通橋樑就是 DataAdapter,透過DataAdapter的方法進行基本的CRUD等等。

這邊好像還有序列化要補充,待整理

DataTable

DataTable在DateSet裡面,所以他只是記憶體中的一個資料表,可以使用DataRelation進行關聯式操作。

DataView

負責篩選排序搜尋

這邊特別提到了父子關係,還沒搞清楚,待問老師 MSDN DataRealation

DataAdapter

使用DataAdapter提取資料時,因為要存取資料庫、尋找資料和處理資料,所以非常消耗時間,而且在提取時所有在伺服器上的資料列都會被鎖定,因此建議使用分段讀取。

[MSDN DataAdpter.Fill( )]

DataAdapter是程式和資料庫之間互動的橋樑,兩者之間所有的操作都會經過DataAdapter [MSDN DataAdapter]

適合使用環境:

  1. 操作頻率高
  2. 使用時間很久

優點:

  • 對連線需求占用率較低

缺點:

  • 不能即時看到資料庫

特性:

  • 自動連線、自動斷線