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

面试题 相关文章推荐
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
Sep 08 面试题
List, Set, Map是否继承自Collection接口?
May 16 面试题
一家外企的面试题目(C/C++面试题,C语言面试题)
Mar 24 面试题
空指针到底是什么
Aug 07 面试题
Order by的几种用法
Jun 16 面试题
中海讯通笔试题
Sep 15 面试题
.NET初级开发工程师面试题(包括Javascript)
Aug 22 面试题
介绍一下MD5加密算法
Nov 12 面试题
介绍一下Linux文件的记录形式
Sep 29 面试题
如何开发一个JQuery插件
Jul 28 面试题
Servlet都有哪些方法?主要作用是什么?
Mar 04 面试题
四种会话跟踪技术
May 20 面试题
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
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
详解YII关联查询
2016/01/10 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
Python3标准库总结
2019/02/19 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
如何让python的运行速度得到提升
2020/07/08 Python
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
建筑人员岗位职责
2013/12/25 职场文书
最新奶茶店创业计划书
2014/01/25 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
师德承诺书
2015/01/20 职场文书
老乡会致辞
2015/07/28 职场文书
《刷子李》教学反思
2016/02/20 职场文书
三好学生竞选稿范文
2019/08/21 职场文书