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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王长森 中级黑马   /  2012-3-6 12:47  /  1960 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想知道他的用法,还有在实际开发中,比如作做一个登陆案例,用DataReader好,还是DataSet好

4 个回复

倒序浏览
1.       DataReader是数据管理提供者类,而DataSet是一般性数据类。

2.       DataSet获取数据需要通过桥梁DataAdapter的填充,由于DataReader本身就是管理提供者,它可以通过Command的ExecuteReader()方法就可以获取数据。

3.       DataReader是在线处理,当连接关闭后就不能读取数据;DataSet可以离线处理数据,它是把数据从数据库拷贝到本地存储,在关闭连接的情况下仍然可以在DataSet中处理数据,甚至可以在本地存储的表格中增加限制。

4.       DataReader只能正向读取数据,但不能修改数据;DataSet可以按任何顺序读行,可以按灵活的方式搜索、排序和过滤这些行,甚至可以改变这些行,然后将这些改变同步到数据库中。

5.       从DataReader读取数据的速度快于DataSet。

6.       由于DataSet是离线处理,所以当在事务处理中要锁定数据库,不可以使用DataSet。因为当DataSet被填充以后,会自动断开与数据库的连接,此时不可能再对数据库进行锁定。



在通常情况下,DataSet与 DataReader可能可以相互代替,当有特定要求时却需要仔细分析,到底使用哪种方式更合适。

DataReader与DataSet最根本的区别就在于一个是在线处理,另一个是离线处理。在线时,得到的是数据库当前的真实数据,但总是在线的话,增加了网络的通讯负担。离线后数据拷贝在本地,可以减轻网络负担,程序处理数据更加方便,若离线时间过长,看到的数据就不一定是真实的数据了。
所以 做个登陆案例就要看具体情况了

评分

参与人数 2技术分 +2 黑马币 +5 收起 理由
官方工作人员 + 2
王长森 + 5 很给力!

查看全部评分

回复 使用道具 举报
原世功 来自手机 中级黑马 2012-3-6 23:33:13
藤椅
楼上说的很清楚了,各有各自的优点,还是要根据实例来决定到底用哪个!
回复 使用道具 举报
朱小磊 来自手机 中级黑马 2012-3-7 08:57:59
板凳
数据库是地下水,Dataset是小池塘(重量级),Datareader是水龙头只出不进(轻量级)。
回复 使用道具 举报
感谢分享~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马