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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

数据库中的DataSet、DataReader怎么用啊?有什么区别啊?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

正序浏览
我在顶贴~!~
回复 使用道具 举报
DataReader是只能向前的只读游标,dataset一个是内存中的表。DataSet可以离线处理,前后滚动.DataReader不能离线处理,且是只读的向前的,不过速度明显会很快 DataSet可以存储数据库各种对象的,比如表触发器等,而DataReader只能存储游标记录
DataSet可以更新回原来的数据库,DataReader不行

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
使用DataReader与DataSet都可以从数据源读取数据。DataReader本身是通过IDbCommand.ExecuteReader()方法进行构建的;而DataSet则是通过DbDataAdapter.Fill()方法进行填充。此外,两者的工作方式有明显的不同:DataReader的执行过程不能脱离数据库连接,也就是在DataReader读取数据的时候不能够使用IDbConnection.Close()方法关闭数据库连接;而在使用DataSet获取数据时,可以断开数据库的连接(具体请参加微软提供的相关的演示文档),因为此时DbDataAdapter已经负责将数据获取到应用服务器中了。

由于有这样的区别,所以在开发数据库相关程序时需要特别注意。例如在使用DataReader获取数据后,应该主动地关闭数据库连接,否则可能出现数据库连接池溢出的异常.

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
DataReader一般用于大数据读取的时候用的(节约本地内存)
DataSet 一般小数据读取(只要与服务器链接一次,之后数据都写到内存,服务断开,数据照样访问)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
貌似有人问过这个问题
DataReader是即时读取服务器数据,但并没有将数据保存到本地。一旦关闭就读取不到数据。
DataSet是保存服务器数据到本地的,本身没有对服务器读取数据。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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