DataSet和DataReader

C# DataReader与DataSet全面对比解析 摘要 DataReader和DataSet是ADO.NET中两种不同的数据访问模型。DataReader采用只进、只读的流式访问,需保持数据库连接,内存占用低,适合处理大数据集。DataSet是断开式的内存数据库,支持CRUD操作和多表关系,但内存消耗较高,适合小规模数据。 核心区别: 连接方式:DataReader需持续连接,DataSet可离线操作。 性能:DataReader加载快、内存占用低;DataSet需全量加载。 功能:DataSet支持数据修改和关系管理,DataReader仅支持读取。 应 阅读详情

ADO.NET2.0提供了两个用于检索关系数据的对象:DataSet和DataReader。并且这两个对象都可以将检索的关系数据存储在内存中。在软件开发过程中经常用到这两个控件,由于这两个控件在使用和功能方面的相似,很多程序员错误地认为DataSet和DataReader是可以相互替代的。这种想法是错误的,在这一小节将会讲到DataSet控件和DataReader控件的区别。

■ 与数据库连接

DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接。

Datareader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。

■ 处理数据速度

DataSet读取、处理速度较慢。

DataReader读取、处理速度较快。

■ 更新数据库

在对DataSet数据集中的数据进行更新后,可以把数据更新回原来的数据库。

在对DataReader中的数据进行更新后,没有办法进行数据库更新。 

■ 支持分页排序

在DataSet中支持分页、动态排序等操作。

在DataReader中没有分页、动态排序的功能。

■ 占用内存

DataSet在 IIS 服务器上所使用的内存较多。

DataSet在 IIS 服务器上所使用的内存较少。

综上所述得出DataSet和DataReader有各自适用的场合。如果数据来源控件只是用来填入控件的清单成为其选项,或者数据绑定控件并不需要提供排序或分页功能的话,则应该使用 DataReader。反之,如果数据绑定控件需要提供排序或分页功能的话,则必须使用 DataSet,通过DataSet设置出来分页排序等页面面显示效果。

8.7.2 如何提高DataSet读取XML的效率
在8.6.1节中讲了使用DataSet的ReadXML方法,把XML文件文件中的数据和架构读取到DataSet数据集中。在XML文件文件中的数据量不大,或者数据架构不复杂的情况下,使用这种方法读取的速度很快,但是对于大文件的读取速度就会明显的降下来,影响程序的运行。在这一小节中将讲到如何提高DataSet读取XML文件的效率。

方法很简单,首先创建一个DataSet实体ds,接下来使用ReadXml方法读取存在的XML文件文件,最后在加载数据后打开通知和约束。代码如下所示。

string inFile;

//判断xml文件是否存在

if (File.Exists(inFile))   

{

//创建DataSet对象,用来读取xml文件

DataSet ds = new DataSet();

using (StringReader sr = new StringReader(inFile))

{

//ds读取xml文件信息

ds.ReadXml(sr, XmlReadMode.IgnoreSchema);

}

//加载数据后打开通知和约束

ds.Tables[0].EndLoadData();

}

8.7.3 如何使用sql语句返回DataSet数据集
    在本小节中主要讲使用sql命令语句的方式来返回数据集。使用sql命令语句把从数据库中检索出来的信息保存在DataSet数据集中。实例代码如下所示。

string sConnectionString; //声明一个字符串

//连接数据库字符串

sConnectionString = " Data Source=.;Initial Catalog=XBMIS;User ID=sa; ";

//创建SqlConnection数据库连接对象

SqlConnection Conn = new SqlConnection(sConnectionString);

//创建SqlDataAdapter对象adapter,Conn是数据库连接字符串

SqlDataAdapter adapter = new SqlDataAdapter("Select * From T_LunWZhT", Conn);

DataSet ds = new DataSet();

adapter.Fill(ds);

//关闭数据库连接函数

GridView3.DataSource = ds.Tables[0];

GridView3.DataBind();

运行效果

将上面代码拷贝到页面的后台代码中,运行程序,显示结果如图8-31所示。

图8-31 GridView中显示DataSet中的数据

8.7.3          如何使用存储过程返回DataSet数据集
在上一小节中主要讲了使用sql语句返回DataSet数据集的方式。在本小节中将介绍使用存储过程实现返回数据集的方式。

存错过程代码如下:

ALTER procedure T_LunWZhT

as

Select zhuangtbh as 编号,zhuangtmc as 名称 From T_LunWZhT

存储过程的名称是:T_LunWZhT。作用是:从T_LunWZhT中查寻出来编号和名称的信息。

下面给出调用存储过程T_LunWZhT的代码,如下所示。

string sConnectionString; //声明一个字符串

//连接数据库字符串

sConnectionString = " Data Source=.;Initial Catalog=XBMIS;User ID=sa; ";

//创建SqlConnection数据库连接对象

SqlConnection Conn = new SqlConnection(sConnectionString);

//创建SqlDataAdapter对象adapter,Pro_ ZhuangTai是存储过程名

SqlDataAdapter adapter = new SqlDataAdapter();

adapter.SelectCommand = new SqlCommand("Pro_ZhuangTai", Conn);

adapter.SelectCommand.CommandType = CommandType.StoredProcedure;

//创建ds并填充数据集

DataSet ds = new DataSet();

adapter.Fill(ds);

//关闭数据库连接函数

GridView3.DataSource = ds.Tables[0];

GridView3.DataBind();

运行效果

将上面代码拷贝到页面的后台代码中,运行程序,显示结果如图8-32所示。

图8-32 GridView中显示DataSet中的数据

8.7.4 关于DataSet.WriteXml()的问题
使用DataSet的WriteXml()方法,可以将DataSet中的数据和架构写入到XML文件文件中保存。通常在WriteXml()方法中使用的参数是String类型的,但是WriteXml()方法还有另外的一种参数类型Stream类型。

两种WriteXml()方法的完整写法如下所示:

DataSet.WriteXml(String filename)

DataSet.WriteXml(Stream filename)

这两种方法的区别:

使用DataSet.WriteXml(String filename)生成的XML文件中包含XML 声明,也就是包含XML文件文件的头文件, 即<?xml version="1.0" standalone="yes"?>。

而使用DataSet.WriteXml(Stream filename) 生成的XML文件文件中却不会写入XML声明。


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/javcof/archive/2007/12/15/1938380.aspx

DataReader和DataSet的区别 总结了一些DataReader和DataSet一些特征和用法上的区别 立即下载

相关推荐

GB/T 27930-2023协议升级与CANoe仿真测试实践

本文深入解析GB/T 27930-2023协议的核心升级,包括A/B类系统分类与EVIN码引入,并详细指导如何使用CANoe搭建仿真测试环境、编写CAPL脚本及利用DLL库进行一致性验证与故障注入测试,助力开发人员确保电动汽车充电通信的合规性与稳定性。

y7z8a的博客 541

转贴(aspxbox):用DataReader还是DataSet?

我经常听到有人问这个问题:“在ASP.NET Web应用程序中我应该用DataReader类还是DataSet类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误解,即认为DataReader(SqlDataReader或OleDbDataReader的缩写)比DataSet好。有时候我也会看到相反的说法。事实上,Microsoft创建了这两个数据存取类是因为它们都是我们所需要的。每个类都有其优

蛙蛙池塘 1798

Android AudioFlinger(一)——初识AndroidAudio Flinger

AudioFlinger 是 Android 系统中的音频中间层(audio HAL, Audio Hardware Abstraction Layer)的一部分,负责管理音频的混音、播放和音量控制等功能。它充当 Android 应用程序和音频硬件之间的桥梁。

hirezy 1670

DataSet 和 DataReader 的区别

DataSet表示一个数据集,是数据在内存中的缓存,可以包含多个表。 DataSet连接数据库是非面向连接的,将数据读取到SQL缓冲池中后,断开连接。 DataReader连接数据库是面向连接的,读取数据时只能向前读取,读取结束,用户决定是否断开连接。 DataSet是数据的载体,保存数据结构。DataReader不承担保存数据的责任,它只负责从数据源读取数据。DataAdapte...

aorentu0744的博客 395

SoC 验证老兵手册

《SoC验证老兵手册》摘要: 针对大型SoC系统级验证,手册提出Cache+DMA场景的高效验证方案。核心方法采用C测试用例(模拟Linux/RTOS真实场景)触发隐蔽bug,配合SV Checker精准捕捉硬件问题(如DMA读取脏缓存行)。特别强调验证方法论:C用例负责复杂行为模拟,SV专注RTL正确性检查;利用Linux天然并发性暴露硬件缺陷。手册还包含模拟面试攻防技巧,指出验证架构师需具备定义Stimulus/Checker边界的能力。终极判断标准:未通过Linux下Cache+DMA+SMP+中断测

元直的博客 1371

告别手动打卡:逍遥模拟器+宥马运动自动跑步脚本配置全流程

本文详细介绍了如何利用逍遥模拟器和自动化脚本实现宥马运动的自动跑步功能,告别手动打卡的繁琐。从环境准备、脚本部署到定位配置和智能调度,全流程指导用户完成自动化设置,提升效率并确保运动数据的真实性。

weixin_42532473的博客 546

Dataset和DataReader区别

DataReader和DataSet的区别2009年03月18日 星期三 上午 09:52DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader

ygzhong000的专栏 1510

新手小白入门编程第2讲 JAVA编程环境搭建 JDK与环境变量、Eclipse

1 JDK 1.1 JDK概述 JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。 JDK是整个java开发的核心,它包含了: JAVA开发工具(jdk\bin) 基础开发库(jdk\jre\lib\rt.jar) 基础开发库的源码(jdk\src.zip) 1.2 JDK下载与安装 本次使用的是JDK1.8,详细安装步骤可以参见”JDK培优安装手册”. 注意事项: 同时安装多个JDK时需要使用执行环境变量来确认使用的是哪个jdk 安装时选择默认选项安装到默认

程序媛泡泡的博客 4万+

C#面:DataReader与Dataset有什么区别

总结一下,DataReader适用于快速读取大量数据,但只能进行只读操作;而DataSet适用于对数据进行缓存和操作,可以进行增删改查等操作。C#中的DataReader和DataSet都是用于处理数据的类,但它们有一些区别。

那个那个鱼的博客 830

华为BEM战略解码体系完整版(85页PPT)(文末有下载方式)

在部门层面,战略解码的核心是将公司战略逐层分解到部门,确保部门目标能够有效支撑公司战略。战略解码的关键原则包括:对公司战略和业务目标的支撑、指标选取考虑部门责任特色、对公司业务流程的支撑、战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码体系的核心目标是将公司战略逐层分解,确保战略目标能够通过可衡量的。在公司层面,战略解码的第一步是战略澄清,明确公司的使命、愿景、战略目标及。

AI_data_cloud的博客 2400

2026.1.11:WSL2中Ubuntu发行版的完全卸载干净指南

摘要:本文详细介绍在WSL2中彻底卸载Ubuntu发行版的步骤。首先通过wsl -l -v确认安装的发行版,使用wsl --terminate终止运行后,推荐使用wsl --unregister命令完全删除发行版(包括所有数据)。还可手动检查残留文件位置(如%LOCALAPPDATA%目录),并提供了备份建议(使用wsl --export)。最后说明验证卸载的方法和可选的高级重置操作。整个过程确保彻底清理相关数据并释放磁盘空间。(

拥抱具身智能,昇腾Ascend C 2393

dataset 与datareader 的区别(整理)

ADO.NET提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和DataReader。DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。当使用DataSet时,经常会利用DataAdapter(也可能是CommandBuild

tiancs的专栏 4257

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 996

DataReader和DataSet区别

第一种解释   DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就...

weixin_34010949的博客 4364

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

DataReader 和 DataSet 的区别

C# 之 DataReader 和 DataSet 的区别 1. 获取数据的方式 ①、DataReader 为在线操作数据, DataReader会一直占用SqlConnection连接,在其获得数据过程中其它操作不可以再使用SqlConnection连接对象。 ②、DataSet 为离线操作数据,DataSet会将数据一次性读入内存,然后断开连接,这时其它操作就可以使用SqlConnectio...

皮卡丘丘丘~~~ 1081

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

DataSet和DataReader之间的比较

通过学习,自己对.NET的框架的提供程序也有了深刻的认识,下面和大家分享下自己的看法和见解!        对于 DataSet 和 DataReader 之间的比较,以及这些对象中每个对象最佳用法的用法似乎对于初学者还不是那么的清楚,那么就从这里开始吧!       ADO

JustMe 1018

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mysql datareader dataset_用DataReader还是DataSet?

用DataReader还是DataSet?更新时间:2006年10月08日 00:00:00 作者:ADO.NET提供了两个主要的类来读取数据。通过本文我们可以学习如何在两者之间进行选择。我经常听到有人问这个问题:“在ASP.NETWeb应用程序中我应该用DataReader类还是DataSet类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误解,即认为DataReader(SqlDat...

weixin_39877504的博客 140

datareader dataset

用DataReader还是DataSet?作者:大鱼 我经常听到有人问这个问题:“在ASP.NET Web应用程序中我应该用DataReader类还是DataSet类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误解,即认为DataReader(SqlDataReader或Ole

aNIITtoKYRJ的专栏 799

DataReader与DataSet的区别

DataReader和DataSet最大的区别在于: DataReader使用时始终占用SqlConnection,在线操作数据库,任何对SqlConnection的操作都会引发DataReader的异常。因为 DataReader每次只在内存中加载一条数据,所以占用的内存是很小的。因为DataReader的特殊性和高性能,所以DataReader是只是向前读的,读了第一条后就不能再去读取第一条了

YangLau的专栏 1164

DataReader和DataSet

我经常听到有人问这个问题:“在ASP.NET Web应用程序中我应该用DataReader类还是DataSet类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误解,即认为DataReader(SqlDataReader或OleDbDataReader的缩写)比DataSet好。有时候我也会看到相反的说法。事实上,Microsoft创建了这两个数据存取类是因为它们都是我们所需要的。每个...

125

dataset 和 datareader对象有什么区别?

导读:   dataset 和 datareader对象有什么区别?   DataSet可以离线处理,前后滚动.DataReader不能离线处理,且是只读的向前的,不过速度明显会很快 DataSet可以存储数据库各种对象的,比如表触发器等,而DataReader只能存储游标记录   DataSet可以更新回原来的数据库,DataReader不行;   DataSet可以FORWORD PR

山里娃的专栏 1928
上一篇: 建立视图和存储过程到底能有什么作用和方便之处
下一篇: 经典SQL语句大全收藏
simoGAO
博客等级 码龄19年 3粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值