黑马程序员技术交流社区

标题: datareader和dateset有什么区别? [打印本页]

作者: 付茂炯    时间: 2012-3-4 14:48
标题: datareader和dateset有什么区别?
本帖最后由 付茂炯 于 2012-3-4 20:58 编辑

datareader和dateset在使用中有什么区别?
作者: 邓坤    时间: 2012-3-4 19:18
datareader是用来读取数据库中的记录的,要通过sqlcommand来创建
dataset是一个数据集,它包含多个Table
二者有很大的区别,可以在网上查到的

作者: 张建康    时间: 2012-3-4 19:51
1:与数据库连接

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

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

2: 处理数据速度

DataSet读取、处理速度较慢。

DataReader读取、处理速度较快。

3: 更新数据库

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

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

4: 支持分页排序

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

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

5  占用内存

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

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


作者: 莫洪刚    时间: 2012-3-4 22:30
SqlDataReader和DataSet不一样!
SqlDataReader是用来读取数据的,自己到服务端去读取,前提是连接为打开状态,不需要占用内存。
DataSet是数据集,一个数据集里面包含多个数据表DataTable,
我们可以使用SqlDataAdapter中的fill方法来填充数据集,得到我们真正想要的数据表,它是占用内存空间的!
就算连接断开,我们依然可以读取数据表中的内容,
而SqlDataReader只要数据库连接关闭,我们就不能读取数据了,当我们数据量大的时候我们一般采用向服务器读取数据,这样不占内存。
不知你是否可懂!
作者: 王长森    时间: 2012-3-5 13:05
我认为两者的区别在与SqlDataReader读取数据是在服务器断,假如网络断了,从而读取数据就失败了,而SqlDataReader 是真对数据量非常的大
而DataSet 他是返回一个数据集,加载到本地内存,这样很稳定,但要注意的是:数据少可以用这种方法,数据大了就会造成内存爆掉,根据需求来设计程序~这样更容易切和实际
作者: 林其响    时间: 2012-3-5 13:27
比如说在sqlDataReader是在System.Data.SqlClient  命名空间中  属于服务器端的   
DataSet System.Data   命名空间中   一般在程序段运行的的  相当于本地的一个数据集  
作者: 黑马王刚    时间: 2012-3-5 14:53
datareader是只读向前的,只能在连接对象未关闭之前使用,否则会引发异常。
dataset是将数据一次性加载在内存中,是离线版的。
datareader较dataset而言,效率高些




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