黑马程序员技术交流社区

标题: dataread()和dataset()的区别 [打印本页]

作者: 风雪再现    时间: 2013-4-23 18:09
标题: dataread()和dataset()的区别
dataread()和dataset()的区别,以及各用在什么地方比较好,有啥需要注意的地方?
作者: 许庭洲    时间: 2013-4-23 22:00
1.DataReader 是连接模式 只读向前 读取数据时要保持连接数据库 优点是读取速度快,缺点是要保持连接;
2. DataTable 是断开模式 一次性将数据读入内存 然后断开与数据库的链接, 优点是可断开操作不用占用连接,缺点是消耗系统资源。
作者: 淡蓝色    时间: 2013-4-25 17:02
DataReader 就像个打印机,是你需要多少行数据就读取多少行数据给你,在读取过程中必须保持数据库的连接
作者: 张伟86    时间: 2013-5-1 11:36
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设置出来分页排序等页面面显示效果。
以上能充分说明两者区别,再结合我自己的实践来说明。
1、DataSet会一般绑定DataTable类型,而使用DataTable和DataSet结合可以很方便的对数据库进行更新;
2、而DataReader,只能读取记录,如果要对数据库进行更新,还需要进行处理。
3、如果你要读取的数据库比较大,那么在将数据写入datatable时候要占用很长的时间。而使用datareader则时候略短。记得我编写商品管理系统的时候测试1w数据,datatable大概要30至50秒左右吧,而datareader只需要10秒左右吧。如果数据量更大,datatable就不是很适合了。假死现象比较严重吧。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2