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

面试题 相关文章推荐
方法名是否可以与构造器的名字相同
Jun 04 面试题
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
Mar 19 面试题
聚网科技C++面试笔试题
Sep 01 面试题
Android笔试题总结
Nov 29 面试题
几道数据库的面试题或笔试题
May 31 面试题
北京某公司的.net笔试题
Mar 20 面试题
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
Sep 29 面试题
StringBuilder和String的区别
May 18 面试题
几个Shell Script面试题
Apr 18 面试题
UNIX特点都有哪些
Apr 05 面试题
J2EE面试题
Mar 14 面试题
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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
用javascript操作xml
2006/11/04 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
JavaScript如何判断对象有某属性
2020/07/03 Javascript
深入理解Python中各种方法的运作原理
2015/06/15 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
pandas string转dataframe的方法
2018/04/11 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
Python代码需要缩进吗
2020/07/01 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
护校行动方案
2014/05/31 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
python如何利用traceback获取详细的异常信息
2021/06/05 Python