2022年Dataset和DataReader区别 .pdf
《2022年Dataset和DataReader区别 .pdf》由会员分享,可在线阅读,更多相关《2022年Dataset和DataReader区别 .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Dataset 和 DataReader 区别DataReader 和 DataSet 最大的区别在于 ,DataReader 使用时始终占用SqlConnection, 在线操作数据库 . 任何对 SqlConnection 的操作都会引发DataReader 的异常 . 因为 DataReader 每次只在内存中加载一条数据, 所以占用的内存是很小的 . 因为 DataReader 的特殊性和高性能 . 所以 DataReader 是只是向前读的读了第一条后就不能再去读取第一条了dataSet 则是将数据一次性加载在内存中 . 抛弃数据库连接读取完毕即放弃数据库连接因为DataSet 将数
2、据全部加载在内存中 . 所以比较消耗内存但是确比DataReader 要灵活可以动态的添加行, 列, 数据. 对数据库进行回传更新操作ADO.NET 提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和 DataReader。DataSet 提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。 DataReader 提供一个来自数据库的快速、仅向前、只读数据流。当使用 DataSet 时,经常会利用 DataAdapter(也可能是 CommandBuilder )与数据源进行交互。当使用DataSet
3、时,也可以利用 DataView 对 DataSet 中的数据应用排序和筛选。也可以从DataSet 继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。当设计应用程序时, 要考虑应用程序所需功能的等级,以确定使用 DataSet 或者是 DataReader。要通过应用程序执行以下操作,就要使用DataSet:r 在结果的多个离散表之间进行导航。r 操作来自多个数据源 (例如,来自多个数据库、 一个 XML文件和一个电子表格的混合数据)的数据。r 在各层之间交换数据或使用XML Web 服务。与 DataReader 不同的是, DataSet能传递给远程客户端。r 重用
4、同样的记录集合, 以便通过缓存获得性能改善 (例如排序、 搜索或筛选数据)。r 每条记录都需要执行大量处理。对使用DataReader 返回的每一行进行扩展处理会延长服务于 DataReader 的连接的必要时间,这影响了性能。r 使用 XML操作对数据进行操作,例如可扩展样式表语言转换(XSLT转换)或XPath 查询。对于下列情况,要在应用程序中使用DataReader:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - r 不
5、需要缓存数据。r 要处理的结果集太大,内存中放不下。r 一旦需要以仅向前、只读方式快速访问数据。注填充 DataSet 时,DataAdapter 使用 DataReader。因此,使用 DataAdapter取代 DataSet 提升的性能表现为节省了DataSet 占用内存和填充 DataSet 需要的循环。一般来说,此性能提升只是象征性的,因此,设计决策应以所需功能为基础。DataReader 与 Dataset 有什么区别?问?:DataReader 与 Dataset 有什么区别?答!: 1: DataReader: 只读方式,这时别的客户不能访问Connection ,速度快 .
6、Dataset: 内存中的表的集合,可以在内存修改. 连接后就与 Connection 断开,答!: 2: 经常听到有人问这个问题:“在ASP.NET Web 应用程序中我应该用DataReader类还是 DataSet 类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误解, 即认为 DataReader (SqlDataReader 或 OleDbDataReader的缩写)比 DataSet好。有时候我也会看到相反的说法。事实上,Microsoft创建了这两个数据存取类是因为它们都是我们所需要的。每个类都有其优点和不足, 你可以根据应用环境来选择用哪一个。本文就两者的选择问题做了很清楚
7、的讲述,可以让你在运用 ASP.NET 时,在选择DataReader类或 DataSet 类的方面得到一些指南。 在基于客户端的 Windows Form应用程序环境下,这些规则可能会改变。我在做这些讲述时,假设你已经用过DataReader 和 DataSet 类了,并对它们很熟悉。运用 DataReader 类下面就是运用 DataReader 类的理想条件:你读取的数据必须是新的, 所以在每次需要数据的时候,你都必须从数据库读取。创建一个DataReader 类不会消耗很多内存,不过随着负荷的增加,DataSet 上的性能也会很快地提高(参考资源中 Visual Studio Maga
8、zine中的文章)。你对每行数据的需求很简单。该情况的最好的例子就是简单地将DataReader 绑名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 定到一个 Web控件,如 DataGrid 或 DropDownList。你只需要从数据库中以只向前的(forward-only) 、 只读的形式来存取XML数据。在这种情况下,你可以用SQLCommand对象的 ExcecuteXmlReader() 方法来得到一个 XmlRead
9、er类(相当于 XML版的 DataReader)。这就需要一个运用FOR XML子句的 SQL Server 查询,或者一个包含有效XML的 ntext字段。你计划对数据库进行几个重复的调用,来读取一小块信息。 在这种情况下, 我们前面提到过的性能数据会有更大的提高。的确,使 DataSet 类更强大的许多功能只适用于基于客户端的Windows Form应用程序,比如在多个表之间建立关系的功能。在很多情况下,DataSet 类都比DataReader 类更有优势,而且在有些情况下,你根本就不能用DataReader 类。运用 DataSet 类在下面的情况,你应该考虑运用DataSet 类:
10、 你构建了一个 Web service ,它运用的数据是你作为返回值读取的数据。因为DataReader 类必须保持到数据库的连接,所以它们不能被序列化到XML中,也不能被发送给一个Web service的调用者。你需要排序或筛选数据。在运用一个DataView 对象(呈现为 DataTable 类的DefaultView属性,它包含一个DataSet 类)来排序或筛选数据前,我们先试着用 SQL查询(如 WHERE 和 ORDER BY 语句)来实现这些功能,并运用更轻量级、更快的 DataReader 类。然而,有时侯用这种方法是不行的,或者当你需要多次地对数据进行排序或筛选时就不能用Da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Dataset和DataReader区别 2022 Dataset DataReader 区别
限制150内