ADO.NET中的DataReader对象与DataSet对象有何不同?

ADO.NET中的DataReader对象与DataSet对象有何不同?期末复习题简答题,简答就可以。。谢谢各位。对的话,给奖励分!!... ADO.NET中的DataReader对象与DataSet对象有何不同?期末复习题简答题,简答就可以。。谢谢各位。对的话,给奖励分!! 展开
 我来答
百度网友5d46c09
2011-06-04 · TA获得超过698个赞
知道答主
回答量:79
采纳率:0%
帮助的人:57.6万
展开全部
使用DataReader与DataSet都可以从数据源读取数据。DataReader本身是通过IDbCommand.ExecuteReader()方法进行构建的;而DataSet则是通过DbDataAdapter.Fill()方法进行填充。此外,两者的工作方式有明显的不同:DataReader的执行过程不能脱离数据库连接,也就是在DataReader读取数据的时候不能够使用IDbConnection.Close()方法关闭数据库连接;而在使用DataSet获取数据时,可以断开数据库的连接(具体请参加微软提供的相关的演示文档),因为此时DbDataAdapter已经负责将数据获取到应用服务器中了。
由于有这样的区别,所以在开发数据库相关程序时需要特别注意。例如在使用DataReader获取数据后,应该主动地关闭数据库连接,否则可能出现数据库连接池溢出的异常。这么多就可以了。
追问
我们老师讲的是DataReader是什么邮标,DataSet是什么数据集。您讲讲这些方面,我当时没有记清楚,谢谢!
追答
dataset 之类的用来存储数据的你可以理解成数据集咯dataset就是一个虚拟的数据库咯,里面存着tables集合,table就保存着你的数据了,当然dataset使用是非常方便的,不需要连接数据库直接就可以new出来了! 还 有一个就是DataReader 也就是数据管理提供者类。你可以理解成datareader就是一个一直连着数据库的管道,一旦connection关闭datareader就直接关闭咯。 并且如果一个datareader没有关闭 再用同一个连接创建datareader就会出错了。 
还有一点啊datareader只能正向读取数据,不能修改数据;DataSet可以按任何顺序读行,可以按灵活的方式搜索、排序和过滤这些行,甚至可以改变这些行,然后将这些改变同步到数据库中。

atareader的实现机制是游标,游标的类型有三种:1 静态游标2 键值游标3动态游标

三种游标区别如下:

静态游标:每当发一条select命令的时候,静态游标会在临时数据库中生成临时表, 把选中的数据全都加载到这个临时表,然后用一个指针来指向这个临时表,这个时候不会产生不可重复读和幻想的问题。

键值游标: 每当发一条select命令的时候,键值游标也会生成一个临时表,但是它加载 到临时表中的数据只有键,怎样理解这个键,用过dictionary吧,通过这个来理解就很容易了,就是说到

这个临时表的数 据不 是选中的所有字段,而是键进去了,这个时候不会产生幻想问题,但是会出现不可重复读的问题。

动态游标: 动态游标为了效率问题,不会产生任何临时表,它直接在原有数据库的基础上来流水前进,只进不退,这也是为了效率才这个设计的,

在读数据的时候会加S锁,读完这条数据就解S锁,然后去读下一条。因此效率很高。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式