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

面试题 相关文章推荐
Yahoo的PHP面试题
May 26 面试题
Java方面的关于数组和继承的笔面试题
Sep 18 面试题
华为慧通面试题
Sep 11 面试题
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
May 23 面试题
一些高难度的SQL面试题
Nov 29 面试题
一些Unix笔试题和面试题
Jan 22 面试题
下列程序在32位linux或unix中的结果是什么
Mar 25 面试题
EJB2和EJB3在架构上的不同点
Sep 29 面试题
Ejb技术面试题
Apr 29 面试题
UNIX文件系统分类
Nov 11 面试题
Servlet如何得到服务器的信息
Dec 22 面试题
J2EE中常用的名词进行解释
Nov 09 面试题
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 smarty模版引擎中的缓存应用
2009/12/02 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Python实现二维有序数组查找的方法
2016/04/27 Python
python开发简易版在线音乐播放器
2017/03/03 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
python变量的作用域是什么
2020/05/26 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
给领导的致歉信范文
2014/01/13 职场文书
如何撰写岗位职责
2014/02/01 职场文书
承诺函格式模板
2015/01/21 职场文书
2015年暑假工作总结
2015/07/13 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
redis中lua脚本使用教程
2021/11/01 Redis
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript