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...

面试题 相关文章推荐
PHP经典面试题
Sep 03 面试题
Weblogc domain问题
Jan 27 面试题
方法名是否可以与构造器的名字相同
Jun 04 面试题
北京银河万佳Java面试题
Mar 21 面试题
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
May 09 面试题
酷瑞网络科技面试题
Mar 30 面试题
接口的多继承会带来哪些问题
Aug 17 面试题
下列程序在32位linux或unix中的结果是什么
Mar 25 面试题
Python里面search()和match()的区别
Sep 21 面试题
掌上明珠Java程序员面试总结
Feb 23 面试题
创联软件面试题笔试题
Oct 07 面试题
DELPHI面试题研发笔试试卷
Nov 08 面试题
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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
python调用摄像头显示图像的实例
2018/08/03 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
Python的互斥锁与信号量详解
2019/09/12 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
Python3 集合set入门基础
2020/02/10 Python
python实现最速下降法
2020/03/24 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
初中英语教学反思
2014/01/25 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
消防宣传标语大全
2015/08/03 职场文书
python开发飞机大战游戏
2021/07/15 Python