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如何对用户密码进行加密
Jul 31 面试题
PHP面试题及答案二
May 23 面试题
浙大网新C/C++面试解惑
May 27 面试题
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
Aug 04 面试题
如何手工释放资源
Dec 15 面试题
linux比较文件内容的命令是什么
Mar 04 面试题
施惠特软件测试面试题以及笔试题
May 13 面试题
软件工程师面试题
Jun 25 面试题
配置管理计划的主要内容有哪些
Jun 20 面试题
Python中pass语句的作用是什么
Jun 01 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Mar 30 面试题
给定一个时间点,希望得到其他时间点
Nov 07 面试题
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 类型转换函数intval
2009/06/20 PHP
php中几种常见安全设置详解
2010/04/06 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
Bootstrap table使用方法汇总
2017/11/17 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
python encode和decode的妙用
2009/09/02 Python
python求素数示例分享
2014/02/16 Python
常用python数据类型转换函数总结
2014/03/11 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python之mock模块基本使用方法详解
2019/06/27 Python
详解python中的异常捕获
2020/12/15 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
三星美国官网:Samsung美国
2017/02/06 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
Linux机考试题
2015/07/17 面试题
班组长工作职责
2013/12/25 职场文书
安全事故检讨书
2014/01/18 职场文书
集体备课反思
2014/02/12 职场文书
人事专员的岗位职责
2014/03/01 职场文书
松材线虫病防治方案
2014/06/15 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
村级个人对照检查材料
2014/08/22 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js