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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付茂炯 中级黑马   /  2012-3-4 14:48  /  4171 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 付茂炯 于 2012-3-4 20:58 编辑

datareader和dateset在使用中有什么区别?

评分

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

查看全部评分

6 个回复

倒序浏览
datareader是用来读取数据库中的记录的,要通过sqlcommand来创建
dataset是一个数据集,它包含多个Table
二者有很大的区别,可以在网上查到的

点评

谢谢。  发表于 2012-3-4 20:58
回复 使用道具 举报
1:与数据库连接

DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接。

Datareader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。

2: 处理数据速度

DataSet读取、处理速度较慢。

DataReader读取、处理速度较快。

3: 更新数据库

在对DataSet数据集中的数据进行更新后,可以把数据更新回原来的数据库。

在对DataReader中的数据进行更新后,没有办法进行数据库更新。  

4: 支持分页排序

在DataSet中支持分页、动态排序等操作。

在DataReader中没有分页、动态排序的功能。

5  占用内存

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

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

点评

O(∩_∩)O谢谢你的答复。  发表于 2012-3-4 20:57

评分

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

查看全部评分

回复 使用道具 举报
SqlDataReader和DataSet不一样!
SqlDataReader是用来读取数据的,自己到服务端去读取,前提是连接为打开状态,不需要占用内存。
DataSet是数据集,一个数据集里面包含多个数据表DataTable,
我们可以使用SqlDataAdapter中的fill方法来填充数据集,得到我们真正想要的数据表,它是占用内存空间的!
就算连接断开,我们依然可以读取数据表中的内容,
而SqlDataReader只要数据库连接关闭,我们就不能读取数据了,当我们数据量大的时候我们一般采用向服务器读取数据,这样不占内存。
不知你是否可懂!

评分

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

查看全部评分

回复 使用道具 举报
我认为两者的区别在与SqlDataReader读取数据是在服务器断,假如网络断了,从而读取数据就失败了,而SqlDataReader 是真对数据量非常的大
而DataSet 他是返回一个数据集,加载到本地内存,这样很稳定,但要注意的是:数据少可以用这种方法,数据大了就会造成内存爆掉,根据需求来设计程序~这样更容易切和实际
回复 使用道具 举报
比如说在sqlDataReader是在System.Data.SqlClient  命名空间中  属于服务器端的   
DataSet System.Data   命名空间中   一般在程序段运行的的  相当于本地的一个数据集  
回复 使用道具 举报
datareader是只读向前的,只能在连接对象未关闭之前使用,否则会引发异常。
dataset是将数据一次性加载在内存中,是离线版的。
datareader较dataset而言,效率高些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马