DataReader与DataSet的区别.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:5 大小:24KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

DataReader与DataSet的区别.doc

DataReader与DataSet的区别.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

DataReader与DataSet有什么区别?DataSet表示一个数据集,是数据在内存中的缓存。可以包括多个表DataSet连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接DataReader连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。分布式系统的数据可能会用dataset做数据载体,因为dataset是保存数据的数据结构,而DataReader不承担保存数据的责任,它只负责从数据源读取数据到本地而已,它不是数据结构,而是网络通讯组件的高层封装。DataAdapter也只是使用DataReader从数据源读取数据并Add到dataset保存起来而已。假如我们单独使用DataReader也可以把数据写入到业务类或者dataset里。那只是根据业务需要而选择不同的数据载体而已。实际上我们从数据库获得数据都会通过DataReader,只不过DataAdapter把这一切都封装起来了DataSet和DataReader对象有什么区别?DataSet可以离线处理,前后滚动.DataReader不能离线处理,且是只读的向前的,不过速度明显会很快;DataSet可以存储数据库各种对象的,比如表触发器等鳧ataReader只能存储游标记录DataSet可以更新回原来的数据库,DataReader不行;DataSet可以FORWORDPREVIUS,而DataReader只能FW;DataReader类似一个只能向前的游标记录集DataSet叫数据集!是ADO.net相对与ADO实现断开式数据库连接性的主要体现!DateReader是一个客户端的只向前游标,两者的应用领域不同!读取数据后!如果要进行比较频繁的改动,可以使用DataSet,并且DataSet也支持串行化,可与xslt结合!进行web开发!DataReader则偏向于快速读取数据!针对数据量比较大的数据可能应用的更加频繁点!ADO.NET提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和DataReader。DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。当使用DataSet时,经常会利用DataAdapter(也可能是CommandBuilder)与数据源进行交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。下列主题包括的信息涉及:使用DataSet或DataReader的最佳时机、如何优化访问它们所包含数据、以及如何优化使用DataAdapter(包括CommandBuilder)和DataView的技巧。DataSet与DataReader当设计应用程序时,要考虑应用程序所需功能的燃叮匀范ㄊ褂肈ataSet或者是DataReader。要通过应用程序执行以下操作,就要使用DataSet:r在结果的多个离散表之间进行导航。r操作来自多个数据源(例如,来自多个数据库、一个XML文件和一个电子表格的混合数据)的数据。r在各层之间交换数据或使用XMLWeb服务。与DataReader不同的是,DataSet能传递给远程客户端。r重用同样的记录集合,以便通过缓存获得性能改善(例如排序、搜索或筛选数据)。r每条记录都需要执行大量处理。对使用DataReader返回的每一行进行扩展处理会延长服务于DataReader的连接的必要时间,这影响了性能。r使用XML操作对数据进行操作,例如可扩展样式表语言转换(XSLT转换)或XPath查询。对于下列情况,要在应用程序中使用DataReader:r不需要缓存数据。r要处理的结果集太大,内存中放不下。r一旦需要以仅向前、只读方式快速访问数据。注填充DataSet时,DataAdapter使用DataReader。因此,使用DataAdapter取代DataSet提升的性能表现为节省了DataSet占用内存和填充DataSet需要的循环。一般来说,此性能提升只是象征性的,因此,设计决策应以所需功能为基础。经常听到有人问这个问题:“在ASP.NETWeb应用程序中我应该用DataReader类还是DataSet类呢?”