DataReader与DataAdapter的区别
DataReader包括:sqlDataReader,oracleDataReader,oledbDataReader,odbcDataReader;
DataAdapter包括:sqlDataAdapter,oracleDataAdapter,oledbDataAdapter,odbcDataAdapter。
对于各数据类型,DataReader和DataAdapter,功能都是一样的。以下依Aceess的oledb为例。
DataReader是一个向前的指针,本身并不包含数据,调用一次Read()方法它就向前到下一条记录,一个DataReader必须单独占用一个打开的数据库连接!【在使用 OleDbDataReader 时,关联的 OleDbConnection 正忙于为 OleDbDataReader 服务,对 OleDbConnection 无法执行任何其他操作,只能将其关闭。除非调用 OleDbDataReader 的 Close 方法,否则会一直处于此状态。例如,在调用 Close 之前,无法检索。】【只能通过再申请一个新的连接变量OleDbConnection】
cmd2.CommandText = sql;
OleDbDataReader odr = cmd2.ExecuteReader();
while (odr.Read()){...}
-------------------------------
DataAdapter象一座桥梁,一头连起数据库表,一头连起一个DataSet或者DataTable,在把数据库中的数据填充到DataSet或DataTable后就可以“过河拆桥”,不用再连接到数据库,而可以直接从DataSet或DataTable中获取数据。
DataSet myds = new DataSet();
cmd.CommandText = sql;
OleDbDataAdapter myda = new OleDbDataAdapter(cmd);
myda.Fill(myds, "temp");
for (int i = 0; i < myds.Tables["temp"].Rows.Count; i++)
{
sta = myds.Tables["temp"].Rows[i][0].ToString().Trim();
...}
System.Data.OleDb.OleDbDataAdapter,可以通过它直接与DataSet建立联系,并操作数据源,功能相对强大,但比较消耗系统资源;System.Data.OleDb.OleDbDataReader呢,有点儿像ADO中的那个只读向前的记录集,它常用在只需要依次读取并显示数据的场合。OleDbDataReader能实现的功能,OleDbDataAdapter都能实现,但有些功能,却只有OleDbDataAdapter才能实现。不过,它耗用的系统资源比System.Data.OleDb.OleDbDataAdapter少。
另外,从数据量级来说,OleDbDataAdapter的Fill过程较慢(写内存),一般用于小型数据处理;OleDbDataReader,一般用于大型数据处理。【经过测试,如果有大量的数据操作,最好是自己写OleDbCommand,会比OleDbDataAdapter操作数据库快很多。http://huliqin1022.blog.163.com/blog/static/131711530200910135577476/】
转载于:https://www.cnblogs.com/yuan2013/archive/2013/05/07/yuan.html
DataReader与DataAdapter的区别相关推荐
- Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介...
ADO.NET技术主要包括Connection.Command.DataReader.DataAdapter.DataSet和DataTable等6个对象,下面对这6个对象进行简单的介绍: (1)Co ...
- mysql datareader dataset_C# 之 DataReader 和 DataSet 的区别
//未式关闭连接 public SysFunction GetModelById(stringid) { SqlConnection conn= new SqlConnection(Configura ...
- c语言 版本号,C语言版本学生信息管理系统
仍然有一些小bug,后续会发布OC完善版的图书馆管理系统,欢迎批评指正. #include void menu_choose(); typedef struct { int Id; int age; ...
- DataSet DataTable DataReader DataAdapter之间的区别
1.四者各自的介绍 DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,相当于存在内存中的数据库,应用程序开始运行时,把数据库相关数据保存到DataSet. DataTab ...
- DataReader与DataSet,DataGrid与DataList等相关知识
DataReader与DataSet有什么区别? DataSet表示一个数据集,是数据在内存中的缓存. 可以包括多个表 DataSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开 ...
- DataReader与DataSet,DataGrid与DataList
DataReader与DataSet有什么区别? DataSet表示一个数据集,是数据在内存中的缓存. 可以包括多个表 DataSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开 ...
- datareader(Datareader对象的什么方法用于从查询结果中读取行)
DataReader和IDataReader的区别? IDataReader是一个接口,它规定了实现这个接口的具体类要提供哪些操作. 而具体的DataReader比如SQLDataReader和Ole ...
- 2010 .NET面试题整理之基础篇
2010 .NET面试题整理之基础篇 zhuan 开篇语:对于已有工作经验的朋友,也许面试题已显得不怎么重要,但是如果你应聘的还仅仅是个普通的程序员,相信在很多的公司都还是会先拿出一套面试题,可能对整 ...
- .NET笔试题集(一)
题目来源于传智播客和各大互联网,复习.重新整理贴出来. 1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 ...
- Asp.net(C#)面试100+题陆续添加中……
我收集的面试题以及自己对一些面试题的理解: 1.C#不支持多重继承,可以通过接口实现. 2.public 全部公开 private 类内部 protected 自己和自己的子类 ...
最新文章
- CSS之布局(盒子模型—边框)
- UVA11400 照明系统设计 Lighting System Design(线性DP)
- 皮一皮:真是个看脸的年代...
- Python全栈开发:RabbitMQ/Redis/Memcache/SQLAlchemy
- C#控制DataMax指令打印DPL问题总结
- 服务器自检后显示scsi,请问一下,如何检测SCSI +RAID 5设置是否正确??
- centos系统中mysql密码_CentOS系统下强行重新修改MySQL密码
- java arcgis server_ArcGIS Server Java 开发实战---自定义command
- 噪声的频谱分析的重要意义_噪声测量:噪声源识别与定位的方法简析
- USACO 3.4 Closed Fences (计算几何)
- java实现电子面单pdf生成_福利!使用Aspose.Words在Java中将Word格式转换为PDF完整指南...
- 浮点型变量的误差问题
- Java电子书下载地址
- RFID电力设备智能巡检管理解决方案
- YARN 工作流程详解
- 共享打印机客户端报错因为文件共享不安全需要SMB1协议
- Nvidia Agx Xavier平台nvp6324模块调试
- HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计 html网页规划与设计
- kali 切换root账号
- 新手入门单片机实战超详细以及遇到一些坑-避障小车1【更新中】
热门文章
- filebeat日志采集的一次流程记录
- 怎么判断网络回路_地暖管漏水怎么办?一打、二看、三确定,及时查出地暖管漏水点!...
- Jenkins系列三通过脚本方式部署maven项目,maven聚合项目到Tomcat
- python编程100例讲解_【python】编程语言入门经典100例--4
- 【Nature论文浅析】基于模型的AlphaGo Zero
- 计算机网络基础系列(八)TCP三次握手、四次挥手、可靠数据传输、拥塞控制和UDP
- Pandas系列(十一)Pandas中concat合并两个dataframe
- bit, byte, KB, GB, TB, PB, EB, ZB, YB, BB, NB, DB, CB, XB
- rsa加解密及加签验签
- 【4】Kafka集群启动/关闭脚本