A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© ♠Akechi♠ 中级黑马   /  2014-3-27 20:39  /  1211 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ♠Akechi♠ 于 2014-3-27 21:39 编辑

具体应该在哪种情况下使用哪种方法?我经常用DataSet,但不知何时使用哪一种效率更高,对数据库有什么影响?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

倒序浏览
SqlDataReader是连接相关的,SqlDataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。
回复 使用道具 举报
再补充一点吧,当数据非常大时候,用DayaSet整个一起下载下来,速度将是非常慢的,这时候一般使用DataReader
回复 使用道具 举报
本帖最后由 zou5268237 于 2014-3-27 21:27 编辑

        ADO.NET2.0提供了两个用于检索关系数据的对象:DataSet和DataReader。并且这两个对象都可以将检索的关系数据存储在内存中。在软件开发过程中经常用到这两个控件,由于这两个控件在使用和功能方面的相似,很多程序员错误地认为DataSet和DataReader是可以相互替代的。这种想法是错误的,在这一小节将会讲到DataSet控件和DataReader控件的区别。

■与数据库连接
DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接。
Datareader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。

■    处理数据速度
DataSet读取、处理速度较慢。
DataReader读取、处理速度较快。

■    更新数据库
在对DataSet数据集中的数据进行更新后,可以把数据更新回原来的数据库。
在对DataReader中的数据进行更新后,没有办法进行数据库更新。  

■    支持分页排序
在DataSet中支持分页、动态排序等操作。
在DataReader中没有分页、动态排序的功能。

■     占用内存
DataSet在 IIS 服务器上所使用的内存较多。
DataReader在 IIS 服务器上所使用的内存较少。

        综上所述得出DataSet和DataReader有各自适用的场合。如果数据来源控件只是用来填入控件的清单成为其选项,或者数据绑定控件并不需要提供排序或分页功能的话,则应该使用 DataReader。反之,如果数据绑定控件需要提供排序或分页功能的话,则必须使用 DataSet,通过DataSet设置出来分页排序等页面面显示效果。
回复 使用道具 举报
学习学习了,又补充了知识,谢谢各位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马