ADO.NET中的DataReader对象与DataSet对象有何不同?
ADO.NET中的DataReader对象与DataSet对象有何不同?期末复习题简答题,简答就可以。。谢谢各位。对的话,给奖励分!!...
ADO.NET中的DataReader对象与DataSet对象有何不同?期末复习题简答题,简答就可以。。谢谢各位。对的话,给奖励分!!
展开
1个回答
展开全部
使用DataReader与DataSet都可以从数据源读取数据。DataReader本身是通过IDbCommand.ExecuteReader()方法进行构建的;而DataSet则是通过DbDataAdapter.Fill()方法进行填充。此外,两者的工作方式有明显的不同:DataReader的执行过程不能脱离数据库连接,也就是在DataReader读取数据的时候不能够使用IDbConnection.Close()方法关闭数据库连接;而在使用DataSet获取数据时,可以断开数据库的连接(具体请参加微软提供的相关的演示文档),因为此时DbDataAdapter已经负责将数据获取到应用服务器中了。
由于有这样的区别,所以在开发数据库相关程序时需要特别注意。例如在使用DataReader获取数据后,应该主动地关闭数据库连接,否则可能出现数据库连接池溢出的异常。这么多就可以了。
由于有这样的区别,所以在开发数据库相关程序时需要特别注意。例如在使用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锁,然后去读下一条。因此效率很高。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询