DataReader和DataSet的异同


Posted in 面试题 onDecember 31, 2014
DataSet的定义:对象是ADO。NET中非连接存储和关系型数据处理的基础数据对象。可以将从数据库中取得的数据集合全部存储于DataSet对象中,操作存储于DataSet的数据,然后再次连接到数据库,根据DataSet的数据更新目前数据库中的数据。
DataSet的主要方法:
1 Clear:清空DataSet的所有DataTable
2 Merge把两个DataSet合并成一个
3 AcceptChanges更新对DataSet的所有更改
4 GetChanges获得对DataSet进行的所有更改
5 HasChanges判断是否有对DataSet进行更改
6 放弃对DataSet对数据库进行的更改
对象:1 DataTable 记录集(相当于表)
2 DataColumn 记录集的字段(相当于列)
3 DataRow 记录(相当于行)
4 DataView 数据视图,是基于DataSet对象中数据的查询条件的。
5 DataRelation 定义不同DataTable 之间的关系
写了一个DataSet的代码清单
DataSet ds=new DataSet();
DataTable dt1=new DataTable();
DataTable dt2=new DataTable();
DataColumn dc1=new DataColumn(“a1″,typeof(int));
DataColumn dc1=new DataColumn(“a2″,typeof(int));
DataColumn dc1=new DataColumn(“a2″,typeof(int));
DataColumn dc1=new DataColumn(“a3″,typeof(int));
dt1.Column.Add(dc1);
dt1.Column.Add(dc2);
dt2.Column.Add(dc2);
dt2.Column.Add(dc3);
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
//在dt1和dt2之间建立一个名为a2的DataRelation
ds.Relation.Add(“a2″,ds.Tables["dt1"].Column["a2"],Tables["dt2"].Column["a2"]);
对象是对数据集合进行向前数条的读取
DataSet和DataReader都可以完成对数据的操作和存储
DataReader对数据读取方便而且快 ,而DataSet有强大的数据库操作功能和非连接访问模式
DataReader和DataSet最大的区别:DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的 读了第一条后就不能再去读取第一条了
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存…但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作
应用:
1 当需要操作非连接数据,将数据发送到应用程序或客户端,提供使用者进行更改之后更新数据库的时候,用DataSet
2 当需要存储、传输、操作多个数据库表时,并且表之间存在着数据关系时,用DataSet
3 需要对数据进行调度操作时,如:数据分页浏览或跳转到固定记录的时候用DataSet
4 当需要一次性读取数据到客户端而且没有更新删除操作时建议使用DataReader
5 需要遍历一个数据集,对数据的每条记录进行只读时用DataReader

Tags in this post...

面试题 相关文章推荐
函数指针的定义是什么
Aug 14 面试题
编写函数,将一个3*3矩阵转置
Oct 09 面试题
在什么时候需要使用"常引用"
Dec 31 面试题
2019年c语言经典面试题目
Aug 17 面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 面试题
三维科技面试题
Jul 27 面试题
介绍一下grep命令的使用
Jun 12 面试题
Java中的基本数据类型所占存储空间大小固定的吗
Feb 15 面试题
方正Java笔试题
Jul 03 面试题
建龙钢铁面试总结
Apr 15 面试题
UNIX特点都有哪些
Apr 05 面试题
J2EE面试题
Mar 14 面试题
NET程序员上机面试题
May 23 #面试题
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
May 23 #面试题
.NET程序员的数据库面试题
Oct 10 #面试题
诺思信科技(南京)有限公司.NET笔试题答案
Jul 06 #面试题
什么是托管函数?托管函数有什么用?
Jun 15 #面试题
什么是.net
Aug 03 #面试题
delegate与普通函数的区别
Jan 22 #面试题
You might like
利用js调用后台php进行数据处理原码
2006/10/09 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
xtree.js 代码
2007/03/13 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
Python自动调用IE打开某个网站的方法
2015/06/03 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
django ORM之values和annotate使用详解
2020/05/19 Python
python实现数字炸弹游戏程序
2020/07/17 Python
python中Mako库实例用法
2020/12/31 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
工厂厂长的职责
2013/12/12 职场文书
集体备课反思
2014/02/12 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
2015年读书月活动总结
2015/03/26 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Python实现照片卡通化
2021/12/06 Python
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技