国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ADO.NET DataReader和DataAdapter的區別

2019-11-17 02:09:44
字體:
來源:轉載
供稿:網友

ADO.NET DataReader和DataAdapter的區別

SqlDataReader是一個向前的指針,本身并不包含數據,調用一次Read()方法它就向前到下一條記錄,一個SqlDataReader必須單獨占用一個打開的數據庫連接。

在使用 SqlDataReader時,關聯的 SqlConnection 正忙于為 SqlDataReader 服務,對 SqlConnection 無法執行任何其他操作。除非調用 SqlDataReader 的 Close 方法,否則會一直處于此狀態。

SqlDataAdapter象一座橋梁,一頭連起數據庫表,一頭連起一個 DataSet 或者 DataTable ,在把數據庫中的數據填充到 DataSet 或 DataTable 后就可以“過河拆橋”,不用再連接到數據庫,而可以直接從 DataSet 或 DataTable 中獲取數據。

SqlDataAdapter提供了許多的方法,來方便我們對一些特定的數據集合進行操作比如,填充一個查詢結果到 DataTable ,或 DataSet 中其實就是類似于:創建一個 SqlCommand 然后執行 "Select * from [Table]" 然后執行 ExcuteReader()方法 得到一個IDataReader對象然后逐行讀取數據并存放到一個集合對象中(如DataTable)經過測試,如果有大量的數據操作最好是自己寫 SqlCommand ,會比SqlDataAdapter操作數據庫快很多

SqlDataReader只能讀取數據庫,而且所操作的表必須處于連接狀態,但是要對數據庫進行寫操時,只能借助 SqlCommand 類,SqlDataAdapter 它建立在 SqlCommand 對象之上,它具有 SqlCommand 類的一切功能,能夠將數據填充到 DataSet 對象中,而且不用再連接到數據庫,而可以直接從 DataSet 或 DataTable 中獲取數據。(因為它采用的無連接傳輸模式)

SqlDataReader對象可以從數據庫中得到只讀的、只能向前的數據流,還可以提高應用程序的性能,減少系統開銷,同一時間只有一條行記錄在內存中。

SqlDataAdapter對象可以自動打開和自動關閉數據庫連接(不需人為管理),適配器的主要工作流程:SqlConnection 對象建立與數據源的連接,SqlDataAdapter 對象經由 SqlCommand 對象返回給SqlDataAdapter,最后將SqlDataAdapter對象加入到 DataSet 對象的 DataTables 對象中。

總結:

性能上:SqlDataReader一次只在內存中存儲一行,減少了系統開銷。優于SqlDataAdapter

讀取時:SqlDataReader需通過調用自身Read()方法循環讀取數據到指定對象。而SqlDataAdapter可通過調用Fill()方法一次性填充數據到DataSet。還可將對 DataSet 所做的更改解析回數據源。

操作上:SqlDataReader需通過調用自身的Close()方法斷開連接。而SqlDataAdapter可以讀取完數據庫后自動斷開連接.

微軟擴展閱讀:https://msdn.microsoft.com/zh-cn/zh-ch/library/ms254931.aspx


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英山县| 琼结县| 景谷| 句容市| 兰西县| 菏泽市| 缙云县| 安吉县| 凤翔县| 平顺县| 乐清市| 元朗区| 禄丰县| 兰溪市| 汝州市| 钦州市| 巴东县| 错那县| 曲水县| 井研县| 昆明市| 合阳县| 镇远县| 衡东县| 义乌市| 黄平县| 江源县| 金阳县| 内乡县| 响水县| 海丰县| 泽州县| 图们市| 台南市| 武邑县| 枣庄市| 辉县市| 商都县| 鲜城| 乐东| 墨脱县|