对比DataSet 和 DataReader 对象

原创 2007年09月15日 13:08:00

ADO.NET 提供两个对象来处理从数据源中抽取的数据。它们是 DataSet DataReader 对象。前者是记录在内存中的缓存,您可以从任何方向随意访问和修改。后者是高度优化的对象,专为以仅向前方式滚动只读记录而设计。请注意 DataSet 看起来象静态游标,但实际上,在 .NET 中与 ADO 只读游标相对应的是 DataReader 对象。DataSet提供内存中关系数据的表现--包括表和次序、约束等表间的关系的完整数据集合。DataReader提供快速、只向前、只读的来自数据库的数据流。

ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。

下面对DataSetDataReader做一个对比,在设计应用程序时,决定使用DataSet还是DataReader需要考虑应用程序需要的功能。

l         使用DataSet是为了实现应用程序的下述功能:

1.         操作结果中的多个分离的表。

2.         操作来自多个源(例如来自多个数据库、XML文件和电子表格的混合数据)的数据。

3.         在层之间交换数据或使用XML Web服务。与DataReader 不同,DataSet能被传递到远程客户端。

4.         通过缓冲重复使用相同的行集合以提高性能(例如排序、搜索或过滤数据)。

5.         每行执行大量的处理。在使用DataReader返回的行上进行扩展处理将使连接存在的时间比必要的更长,从而降低效率。

6.         使用XML操作(例如XSLT转换和Xpath查询)维护数据。

l         在应用程序需要以下功能时使用DataReader

1.         不需要缓冲数据。

2.         正在处理的结果集太大而不能全部放入内存中。

3.         需要迅速一次性访问数据,采用只向前的只读的方式。

注意:当填充DataSet的时候,DataAdapter使用DataReader。因此使用DataAdapter代替DataSet获得的性能是节约了DataSet消耗的内存和组装DataSet所需要的周期。这种性能的提高大部分是有名无实的,因此你应该根据需要的功能为基础来做设计决定。

 

数据库访问的一些公共的方法02-返回DataReader,DataSet,DataTable等对象

#region -----------------------SQL数据库的操作方法,返回DataReader,DataSet,DataTable等对象--------------------- ...
  • lijingrong_ljr
  • lijingrong_ljr
  • 2015年08月07日 15:25
  • 475

DataReader与Dataset有什么区别?

第一种解释DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataRe...
  • suleil1
  • suleil1
  • 2015年10月28日 16:47
  • 203

DataReader与DataSet有什么区别? (转)

http://www.cnblogs.com/jiahaohk/articles/1546864.html   DataReader与DataSet有什么区别?  本文来源:http://ww...
  • zunguitiancheng
  • zunguitiancheng
  • 2013年11月17日 21:18
  • 532

DataReader与DataSet有什么区别?

转自:http://www.cnblogs.com/puke/archive/2007/07/24/829290.html dataset表示一个数据集,是数据在内存中的缓存。 可以包括...
  • stypace
  • stypace
  • 2013年08月29日 22:12
  • 1310

C#之读取数据:DataReader对象

上一篇涉及到Command对象的ExecuteReader()方法返回一个DataReader对象,那么我们就来详细的介绍这个DataReade对象。         下面的例子使用的数据表依然与上...
  • erlian1992
  • erlian1992
  • 2015年05月23日 15:57
  • 6215

SQL那些事儿(十二)--DATASET 与 DATAREADER区别

DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发...
  • xcymorningsun
  • xcymorningsun
  • 2016年11月10日 21:57
  • 1003

C#之数据集:DataSet对象

ADO.NET数据访问技术的一个突出的特点就是支持离线访问,而实现这种离线访问技术的核心就是DataSet对象,该对象通过将数据驻留在内存来实现离线访问。         DataSet对象概述 ...
  • erlian1992
  • erlian1992
  • 2015年05月26日 17:14
  • 2089

用data.DataReader读取股价数据并分析--python学习笔记17

#加载相应的包 import numpy as np import pandas as pd from pandas_datareader import data,wb  #从互联网读入数据 ...
  • qq_26948675
  • qq_26948675
  • 2016年12月08日 16:14
  • 7051

.Net 中DataSet和DataTable的 区别与联系

一、DataSet和DataTable的 区别与联系 1、简要说明二者关系        在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 datatable ...
  • xjc1278003262
  • xjc1278003262
  • 2013年08月07日 14:52
  • 14235

将DataSet转换成List

将一个dataSet转换成一个list 所以就需要取得DataSet里面的一个table表 因为list是IList类型的,所以就要实例化一个list 【IList list=new List】 这时...
  • Fanbin168
  • Fanbin168
  • 2014年04月11日 17:38
  • 6846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对比DataSet 和 DataReader 对象
举报原因:
原因补充:

(最多只允许输入30个字)