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

面试题 相关文章推荐
什么是smarty? Smarty的优点是什么?
Aug 11 面试题
一些.net面试题
Oct 06 面试题
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
Nov 20 面试题
动态密码技术
Oct 18 面试题
金士达面试非笔试
Mar 14 面试题
C#怎么让一个窗口居中显示?
Oct 20 面试题
Linux的文件类型
Mar 07 面试题
介绍一下grep命令的使用
Jun 28 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
Jan 06 面试题
请写出一段Python代码实现删除一个list里面的重复元素
Dec 29 面试题
Java中各种基本数据类型的默认值都是什么
Dec 22 面试题
Java面向对象面试题
Dec 26 面试题
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获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
Javascript 类型转换方法
2010/10/24 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
解决python线程卡死的问题
2019/02/18 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
对python中UDP,socket的使用详解
2019/08/22 Python
python绘制随机网络图形示例
2019/11/21 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
后备干部推荐材料
2014/12/24 职场文书
护士旷工检讨书
2015/08/15 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技