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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaqingchao 中级黑马   /  2013-2-20 14:13  /  1642 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

既然DataReader的读取速度要比DataSet快,而且省资源为什么发现DataSet要比DataReader用的要多呢

评分

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

查看全部评分

3 个回复

倒序浏览
DataReader只读只进的结果集
必须保持连接状态
不管查询多少,对程序占用内存小
小量数据麻烦

内存里的数据库  DataSet  DataTable
数据集 DataSet
断开是连接的数据库操作
查询结果放到内存中
不管连接  断开服务器都不影响数据的读取

当处理少量的数据的时候用DataSet,使用方便

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 黑马-杨鹏立 于 2013-2-20 16:48 编辑

dataReader的读取过程是一步一步向下读取,而且在没有读完数据时,不能与数据库断开连接,不然就会报错。。。他的好处如你所说,速度是很快,但是他的缺点是必须时时与数据库保持连接,这样数据库压力很大。。。假如你做的是互联网网站,同一时间段访问的人数增多,数据库连接一直保持想想数据库能否承受得住呢?
dataSet相当于一个离线数据库,把数据下载到内存中在本地进行操作,这样就大大降低了数据库压力,不过我觉得dataTable用的会更多点。。。呵呵,相互学习共同成长

少量数据就考虑dataSet    数据量大还得考虑dataReader   

评分

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

查看全部评分

回复 使用道具 举报
各有各的优点哦,SqlDataReader() 在读取数据的时候不能断开与数据库的连接,否则会出问题 , 但是有点是性能高 : DataSet (SqlDataAdapter)是一次性把读取出的数据封装成一个对象放在内存中,此时可以断开数据库连接,减轻数据库压力. 所以用哪个主要看实际应用.

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马