台灣最大程式設計社群網站
線上人數
1431
 
會員總數:245013
討論主題:188959
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> C# 使用 ADO.NET 教學
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C# 使用 ADO.NET 教學
價值 : 0 QP  點閱數:3017 回應數:0

樓主

E-Troy 版主
初學者
80 52
283 11
發送站內信

ADO.NET提供以下兩個方法,用於檢索關係資料並將其預存在內存中:DataSet和DataReader。DataSet提供一個內存中資料的關係表示形式,一整套包括一些表在內的資料(這些表包含資料、對資料進行排序並約束資料),以及表之間的關係。DataReader提供一個來自資料庫的快速、僅向前、只讀資料流。

當使用DataSet時,經常會利用DataAdapter或CommandBuilder進行互動。當使用DataSet時,也可以利用DataView對DataSet中的資料應用排序和篩選。也可以從DataSet繼承,增加強類型DataSet,用於將表、行和列作為強類型對像屬性公開。

所以本文解說使用DataSet或DataReader的最佳時機、如何優化訪問它們所包含資料、以及如何優化使用DataAdapter(包括CommandBuilder)和DataView的技巧。

•操作來自多個資料源可以是一個XML文件和一個電子錶格的混合資料)的資料。
•在各層之間交換資料或使用XML Web服務,DataSet能傳遞給遠端客戶端。
•大量處理每條記錄。對使用DataReader返回的每一行進行擴展處理會延長服務於DataReader的連接的必要時間。
•使用XML操作對資料進行操作,例如可擴展樣式表語言轉換(XSLT轉換)或XPath查詢。
•重用同樣的記錄集合,以便通過快取獲得性能改善。


應用程式中使用DataReader:

•不需要快取資料。
•要處理的結果集太大,內存中放不下。
•一旦需要以僅向前、只讀方式快速訪問資料。

以下是C#使用ADO.NET的範例:


用DataAdapter優化連接

DataAdapter的Fill和Update方法在連接關閉的情況下自動打開為相關命令屬性指定的連接。如果Fill或Update方法打開了連接,Fill或Update將在操作完成的時候關閉它。為了獲得最佳性能,僅在需要時將與資料庫的連接保持為打開。同時,減少打開和關閉多操作連接的次數。

如果只執行單個的Fill或Update方法調用,建議允許Fill或Update方法隱式打開和關閉連接。如果對Fill和Update調用有很多,建議顯式打開連接,調用Fill和Update,然後顯式關閉連接。

另外,當執行事務時,顯式地在開始事務之前打開連接,並在提交之後關閉連接。


始終關閉Connection和DataReader

完成對Connection或DataReader對象的使用後,總是顯式地關閉它們。儘管垃圾回收最終會清除對象並因此釋放連接和其他托管資源,但垃圾回收僅在需要時執行。因此,確保任何寶貴的資源被顯式釋放仍然是您的責任。並且,沒有顯式關閉的Connections可能不會返回到池中。例如,一個超出作用範圍卻沒有顯式關閉的連接,只有當連接池大小達到最大並且連接仍然有效時,才會被返回到連接池中。

注不要在類的Finalize方法中對Connection、DataReader或任何其他托管對像調用Close或Dispose。最後完成的時候,僅釋放類自己直接擁有的非托管資源。如果類沒有任何非托管資源,就不要在類定義中包含Finalize方法。


在C#中使用「Using」語句

對於C#程式員來說,確保始終關閉Connection和DataReader對象的一個方便的方法就是使用using語句。using語句在離開自己的作用範圍時,會自動調用被「使用」的對象的Dispose。

搜尋相關Tags的文章: [ C# ] , [ ADO.NET ] ,
本篇文章發表於2015-11-03 14:08
== 簽名檔 ==
上帝的藝術-電腦神手的領域 - http://etroy.pixnet.net/blog
上帝的藝術-微軟的神域 - http://etroy-com.blogspot.tw/
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.