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的区别相关推荐

  1. Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介...

    ADO.NET技术主要包括Connection.Command.DataReader.DataAdapter.DataSet和DataTable等6个对象,下面对这6个对象进行简单的介绍: (1)Co ...

  2. mysql datareader dataset_C# 之 DataReader 和 DataSet 的区别

    //未式关闭连接 public SysFunction GetModelById(stringid) { SqlConnection conn= new SqlConnection(Configura ...

  3. c语言 版本号,C语言版本学生信息管理系统

    仍然有一些小bug,后续会发布OC完善版的图书馆管理系统,欢迎批评指正. #include void menu_choose(); typedef struct { int Id; int age; ...

  4. DataSet DataTable DataReader DataAdapter之间的区别

    1.四者各自的介绍 DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,相当于存在内存中的数据库,应用程序开始运行时,把数据库相关数据保存到DataSet. DataTab ...

  5. DataReader与DataSet,DataGrid与DataList等相关知识

    DataReader与DataSet有什么区别? DataSet表示一个数据集,是数据在内存中的缓存. 可以包括多个表 DataSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开 ...

  6. DataReader与DataSet,DataGrid与DataList

    DataReader与DataSet有什么区别? DataSet表示一个数据集,是数据在内存中的缓存. 可以包括多个表 DataSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开 ...

  7. datareader(Datareader对象的什么方法用于从查询结果中读取行)

    DataReader和IDataReader的区别? IDataReader是一个接口,它规定了实现这个接口的具体类要提供哪些操作. 而具体的DataReader比如SQLDataReader和Ole ...

  8. 2010 .NET面试题整理之基础篇

    2010 .NET面试题整理之基础篇 zhuan 开篇语:对于已有工作经验的朋友,也许面试题已显得不怎么重要,但是如果你应聘的还仅仅是个普通的程序员,相信在很多的公司都还是会先拿出一套面试题,可能对整 ...

  9. .NET笔试题集(一)

    题目来源于传智播客和各大互联网,复习.重新整理贴出来. 1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 ...

  10. Asp.net(C#)面试100+题陆续添加中……

    我收集的面试题以及自己对一些面试题的理解: 1.C#不支持多重继承,可以通过接口实现. 2.public 全部公开     private 类内部     protected 自己和自己的子类     ...

最新文章

  1. CSS之布局(盒子模型—边框)
  2. UVA11400 照明系统设计 Lighting System Design(线性DP)
  3. 皮一皮:真是个看脸的年代...
  4. Python全栈开发:RabbitMQ/Redis/Memcache/SQLAlchemy
  5. C#控制DataMax指令打印DPL问题总结
  6. 服务器自检后显示scsi,请问一下,如何检测SCSI +RAID 5设置是否正确??
  7. centos系统中mysql密码_CentOS系统下强行重新修改MySQL密码
  8. java arcgis server_ArcGIS Server Java 开发实战---自定义command
  9. 噪声的频谱分析的重要意义_噪声测量:噪声源识别与定位的方法简析
  10. USACO 3.4 Closed Fences (计算几何)
  11. java实现电子面单pdf生成_福利!使用Aspose.Words在Java中将Word格式转换为PDF完整指南...
  12. 浮点型变量的误差问题
  13. Java电子书下载地址
  14. RFID电力设备智能巡检管理解决方案
  15. YARN 工作流程详解
  16. 共享打印机客户端报错因为文件共享不安全需要SMB1协议
  17. Nvidia Agx Xavier平台nvp6324模块调试
  18. HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计 html网页规划与设计
  19. kali 切换root账号
  20. 新手入门单片机实战超详细以及遇到一些坑-避障小车1【更新中】

热门文章

  1. filebeat日志采集的一次流程记录
  2. 怎么判断网络回路_地暖管漏水怎么办?一打、二看、三确定,及时查出地暖管漏水点!...
  3. Jenkins系列三通过脚本方式部署maven项目,maven聚合项目到Tomcat
  4. python编程100例讲解_【python】编程语言入门经典100例--4
  5. 【Nature论文浅析】基于模型的AlphaGo Zero
  6. 计算机网络基础系列(八)TCP三次握手、四次挥手、可靠数据传输、拥塞控制和UDP
  7. Pandas系列(十一)Pandas中concat合并两个dataframe
  8. bit, byte, KB, GB, TB, PB, EB, ZB, YB, BB, NB, DB, CB, XB
  9. rsa加解密及加签验签
  10. 【4】Kafka集群启动/关闭脚本