摘要:DataSet V.S DataReader
DataReader ---- 很類似以前ADO的RecordSet,但資料指標只能循序向前(Forward)無法後退,所以無法撰寫「分頁」的功能。優點是效率高、速度快,很適合用來作為單純的工作,例如:展示大量資料。
DataSet ---- 一種離線運作的資料庫快取,存放在主機的記憶體裡面。DataSet是透過DataAdapter(資料配接器)來執行SQL指令,功能非常強大,幾乎就是資料庫的翻版(如:DataView、DataTable、Relationship等等都作得到)。可以把資料庫複製到主機的記憶體裡面,如此一來面對關係複雜的多重資料表,就能快速地處理。缺點是:使用DataSet比較消耗資源。
用表格來比較如下:
(資料來源,以MS SQL Server為例) |
ADO.NET兩大物件的比較 |
|
DataSet |
DataReader |
|
連接資料庫(Connection) |
(不需要,因為SqlDataAdapter會自動開啟連結,使用後自動關閉)
|
SqlConnection.Open() |
執行SQL指令 1. Select 2. Delete/Update/Insert |
SqlDataAdapter 1. .Fill()方法 2. .Update()方法 |
SqlCommand 1. .ExecuteReader()方法 2. .ExecuteNonQuery()方法 |
資料指標 的移動 |
DataSet類似資料庫行為的資料快取。這些資料將存放在記憶體裡面,所以可以自由靈活地操作內部資料。 |
讀取資料時,只能「唯讀、順向(Forward)」的動作。 |
如何處理資料庫 與資料表? |
可以處理複雜的資料庫關聯與多個DataTable、DataView。 |
透過使用者自訂的SQL指令來存取。 適合處理單一的資料表。 |
消耗資源 |
較大 |
小,而且快速 |
分頁功能 (Paging) |
有 |
無 |
資料來源:http://www.dotblogs.com.tw/mis2000lab/archive/2008/08/15/4919.aspx