黑马程序员技术交流社区
标题:
关于ADO.NET中DataReader和DataAdapter/DataSet
[打印本页]
作者:
xiaobai198611
时间:
2011-11-3 11:14
标题:
关于ADO.NET中DataReader和DataAdapter/DataSet
本帖最后由 xiaobai198611 于 2011-11-3 11:42 编辑
DataReader和DataAdapter/DataSet可以对数据库进行访问和修改,那什么时候用哪一个类比较适合?还有就是使用DataAdapter对象时,能根据需要自动打开和关闭连接怎么理解这一句话!
作者:
周大俊
时间:
2011-11-3 11:36
本帖最后由 周大俊 于 2011-11-3 11:37 编辑
主要是DataReader和DataSet的比较,DataAdapter是配合Dataset使用的。
DataReader:每次读取一行,
.不需要缓冲数据。
·正在处理的结果集太大而不能全部放入内存中。
·需要迅速一次性访问数据,采用只向前的只读的方式
DataSet:一次从数据库中全部读取
.操作来自多个源(例如来自多个数据库、XML文件和电子表格的混合数据)的数据。
·在层之间交换数据或使用XM·Web服务。与DataReader 不同,DataSet能被传递到远程客户端。
·通过缓冲重复使用相同的行集合以提高性能(例如排序、搜索或过滤数据)。
·每行执行大量的处理。在使用DataReader返回的行上进行扩展处理将使连接存在的时间比必要的更长,从而降低效率。
作者:
章坚
时间:
2011-11-3 11:38
DataReader是对数据进行读取操作,且是只读只进的运行机制,在数据读取方面效率高,但会对数据库进行独占式连接,独占的时候被人无法对数据库进行修改,当DataReader没有循环完的时候它会一直独占数据库。
DataSet是个内存数据库,它与其它两个是根本不一样的。
SqlDataAdapter是个数据适配器,工作于DataSet和数据库之间,负责将数据从数据源读出来放在DataSet中,或将DataSet中的更改更新回数据库。
作者:
liucaifu
时间:
2011-11-3 11:39
DataReader是在线访问,只能读不能改,速度快,需要通过SqlConnection进行打开数据库才能访问,最后养老,DATASET是一种离线的方式,可以修改,不需要通过Sqlconnection进行打开,也可以访问,通过DATAAdapter建立桥梁,然后同步到数据库
作者:
沙铁健
时间:
2011-11-3 11:42
DataReader 一次读一行 例如你验证登陆的时候就可以用 DataReader 来具体实现 DataAdapter用来填充数据集DataSet 例如你要 查询一组数据 就用这个 配合DataGridView更好的展示.
作者:
xiaobai198611
时间:
2011-11-3 11:43
本帖最后由 xiaobai198611 于 2011-11-3 11:45 编辑
还有就是使用DataAdapter对象时,能根据需要自动打开和关闭连接怎么理解这一句话!是不是不需要手动去释放dataset对象呢?相对于目前服务器而言这样消耗资源是不是可以忽略不计
作者:
周大俊
时间:
2011-11-3 11:44
当调用SqlDataAdapter对象的Fill()方法时,SqlDataAdapter对象会自动创建并打开该数据库连接。从数据库中取得所需数据后,Fill()方法将自动地关闭数据库连接。这里不需要使用try... catch语句来保护对Fill()方法的调用。因为在该方法内部,SqlDataAdapter对象已使用了try...catch语句来确保其连接会被关闭。
作者:
陈涛
时间:
2011-11-3 11:55
DataReader与DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库.任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据.所以占用的内存很小.
而DataSet则是将数据一次性加载到内存中.抛弃数据库连接,读取完毕即放弃数据库连接,所以比较耗内存,但是确实比DataReader要灵活.
可以动态的添加行,列,数据,对数据库进行回传更新操作.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2