ADO.NET 提供两个对象来处理从数据源中抽取的数据。它们是 DataSet 和 DataReader 对象。前者是记录在内存中的缓存,您可以从任何方向随意访问和修改。后者是高度优化的对象,专为以仅向前方式滚动只读记录而设计。请注意 DataSet 看起来象静态游标,但实际上,在 .NET 中与 ADO 只读游标相对应的是 DataReader 对象。DataSet提供内存中关系数据的表现--包括表和次序、约束等表间的关系的完整数据集合。DataReader提供快速、只向前、只读的来自数据库的数据流。
ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。
下面对DataSet与DataReader做一个对比,在设计应用程序时,决定使用DataSet还是DataReader需要考虑应用程序需要的功能。
<!--[if !supportLists]-->l <!--[endif]-->使用DataSet是为了实现应用程序的下述功能:
<!--[if !supportLists]-->1. <!--[endif]-->操作结果中的多个分离的表。
<!--[if !supportLists]-->2. <!--[endif]-->操作来自多个源(例如来自多个数据库、XML文件和电子表格的混合数据)的数据。
<!--[if !supportLists]-->3. <!--[endif]-->在层之间交换数据或使用XML Web服务。与DataReader 不同,DataSet能被传递到远程客户端。
<!--[if !supportLists]-->4. <!--[endif]-->通过缓冲重复使用相同的行集合以提高性能(例如排序、搜索或过滤数据)。
<!--[if !supportLists]-->5. <!--[endif]-->每行执行大量的处理。在使用DataReader返回的行上进行扩展处理将使连接存在的时间比必要的更长,从而降低效率。
<!--[if !supportLists]-->6. <!--[endif]-->使用XML操作(例如XSLT转换和Xpath查询)维护数据。
<!--[if !supportLists]-->l <!--[endif]-->在应用程序需要以下功能时使用DataReader:
<!--[if !supportLists]-->1. <!--[endif]-->不需要缓冲数据。
<!--[if !supportLists]-->2. <!--[endif]-->正在处理的结果集太大而不能全部放入内存中。
<!--[if !supportLists]-->3. <!--[endif]-->需要迅速一次性访问数据,采用只向前的只读的方式。
注意:当填充DataSet的时候,DataAdapter使用DataReader。因此使用DataAdapter代替DataSet获得的性能是节约了DataSet消耗的内存和组装DataSet所需要的周期。这种性能的提高大部分是有名无实的,因此你应该根据需要的功能为基础来做设计决定。
分享到:
相关推荐
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发DataReader的异常。下面同本文对dataset与datareader的区别...
ADO.NET全套资料 连接数据库 数据绑定(建立和管理简单数据绑定 建立和管理复杂的数据绑定) Command对象和DataReader对象(Command,DataReader对象属性和方法 ) DataAdapter对象和DataSet对象() ADO。...
总结了一些DataReader和DataSet一些特征和用法上的区别
ADO.NET提供两个对象用于检索关系型数据并把它存储在内存中,分别是DataSet和DataReader。DataSet提供内存中关系数据的表现–包括表和次序、约束等表间的关系的完整数据集合。DataReader提供快速、只向前、只读的...
AspnetO博客系列:.NET中的DataSet,DataReader,DataAdapter,DataView AspnetO-快速学习Asp.net的方法[ ] 资源: 您可能还喜欢: 这组模块旨在提供有关Asp.net,C#/ Vb,HTML,CSS,JavaScript,jQuery等编程...
C#将对象数组转换成DataSet使用案例 c#经典案例.pdf
某学院《数据库技术应用》的课件。...DataTable对象中的DataColumn对象和DataRow对象;类型化数据集 利用DataSet修改数据;DataSet中的约束和数据关系;类型化数据集的应用 可供教师上课使用,也可供爱好者自学。
13.4.1 DataReader对象的常用属性和方法 225 13.4.2 使用DataReader对象读取数据 226 13.5 DataSet对象 227 13.5.1 创建DataSet对象 228 13.5.2 向DataSet中添加DataTable 228 13.5.3 将控件绑定到DataSet 229 ...
在ADO.NET结构中,常用的组件(对象)有五个,Connection对象、Command对象、DataReader对象、DataApdapter对象和DataSet对象,其中Connection对象、Command对象、DataReader对象,和DataApdapter对象被称为数据提供...
介绍 DataSet对象例子,亲自运行过,没有问题初学者参考
2.6.3 DataCOIumn和DataRow对象 41 2.6.4 使用DataSet对象访问数据库 44 2.7 ADO.NET 代码综合示例 45 2.7.1 使用OLE DB.NET Provider 45 2.7.2 使用SQL Server .NET Provider 46 2.7.3 数据库访问综述 47 2.8 ...
、XML的完整性:DataSet对象和XML文档几乎是可互换的。 、创建DataSet对象: 、查看调用SqlDataAdapter.Fill创建的结构 、查看SqlDataAdapter返回的数据 DataRow对象 DataRow中的数据 DatTable中...
C# DataSet和DataTable详解
给ASP.NET中的TreeView绑定DataSet或ObjectDataSource对象
在我使用这个方法开发程序的时候我发现使用DataSet和DataAdapter对象更新关系数据的方法有问题。如果你仅仅更新一个DataTable,那么为DataAdapter创建代码就没多大问题,但是如果你使用多于一个表,那些表之间有...
通过DataSet 对象更新数据库 通过DataSet 对象更新数据库 通过DataSet 对象更新数据库
C# DataSet和XML文件的相互转换 DataSet和XML文件的相互转换
DataSet对象! 很值得下载看看!资源免费,大家分享!!
5.如果要将一个方法定义为无返回值类型的方法,则需要使用什么关键字? 6.下列代码中x的输出结果是___________。 private int Add(ref int x, int y) ...8. System.String 和System.StringBuilder有什么区别?