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

面试题 相关文章推荐
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
Oct 27 面试题
到底Java是如何传递参数的?是by value或by reference?
Jul 13 面试题
如何让Java程序执行效率更高
Jun 25 面试题
Java工程师面试集锦之Spring框架
Jun 16 面试题
SQL Server提供的3种恢复模型都是什么? 有什么区别?
May 13 面试题
SQL Server面试题
Apr 04 面试题
Sql面试题
Mar 20 面试题
杭州联环马网络笔试题面试题
Aug 04 面试题
北京天润融通.net面试题笔试题
Feb 20 面试题
广州某公司软件工程师面试题
Dec 22 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
Jun 27 面试题
远程调用的原理
Jul 05 面试题
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
模仿OSO的论坛(四)
2006/10/09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
wxpython 学习笔记 第一天
2009/02/09 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
大学军训感言300字
2014/03/09 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
补充协议书
2015/01/28 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
CentOS安装Nginx并部署vue
2022/04/12 Servers