国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长寿区| 成武县| 高碑店市| 阳曲县| 二连浩特市| 贺兰县| 长泰县| 柳林县| 华亭县| 铅山县| 长顺县| 平罗县| 赫章县| 玉门市| 安图县| 永嘉县| 阳西县| 云林县| 宜良县| 东辽县| 湘乡市| 玛曲县| 威海市| 洛南县| 铜鼓县| 玛多县| 扎兰屯市| 汉中市| 漠河县| 沙坪坝区| 丽江市| 潍坊市| 龙胜| 专栏| 清镇市| 东阳市| 托里县| 大名县| 醴陵市| 平武县| 沾益县|