OleDbCommand与OleDbCommandBuilder、OleDbDataAdapter、OleDbDataReader的关系

OleDbCommand与OleDbCommandBuilder、OleDbDataAdapter、OleDbDataReader的关系OleDbCommand属于DBcommand(还包括odbcCommand\OracleCommand\SqlCommand)类派生,DBcommand的作用是:当建立与数据源的连接后,可以使用DBCommand对象来执行命令并从数据源中返回结果;OleDbCommand就是在建立OleDBConnection之后,可以从数据源中返回数据结果,如sql查询结果,具体见下面说明

大家好,又见面了,我是你们的朋友全栈君。OleDbCommand属于DBcommand(还包括odbcCommand\OracleCommand\SqlCommand)类派生,DBcommand的作用是:

当建立与数据源的连接后,可以使用 DBCommand 对象来执行命令并从数据源中返回结果;

OleDbCommand就是在建立OleDBConnection之后,可以从数据源中返回数据结果,如sql查询结果,具体见下面说明

名称                                            说明  

OleDbCommand ()                          初始化 OleDbCommand 类的新实例。  

OleDbCommand (String)                    用查询文本初始化 OleDbCommand 类的新实例。  

OleDbCommand (String, OleDbConnection)   初始化具有查询文本和 OleDbConnection 的 OleDbCommand 类的新实例。  

OleDbCommand (String, OleDbConnection, OleDbTransaction)   初始化具有查询文本、OleDbConnection 和 Transaction 的

OleDbCommand 类的新实例。  

一、OleDbCommand与OleDbCommandBuilder

OleDbCommandBuilder用于 

OleDbCommandBuilder cmdb=new OleDbCommandBuilder(adapter); 用于OleDbDataAdapter的对象。 

而OleDbCommand用于 

OleDbCommand oldcmd=new OleDbCommand(sql,olecon); 用于OleConnection和SQL语句这两个参数对象。

二、OleDbCommand与OleDbDataAdapter

DataAdapter 用于从数据源检索数据并填充 DataSet 中的表。DataAdapter 还将对 DataSet 的更改解析回数据源。DataAdapter 使用 .NET Framework 数据提供程序的 Connection 对象连接到数据源,并使用 Command 对象从数据源检索数据以及将更改解析回数据源。

OleDbDataAdapter 充当 DataSet 和数据源之间的桥梁,用于检索和保存数据。OleDbDataAdapter 通过以下方法提供这个桥接器:

使用 Fill 将数据从数据源加载到 DataSet 中,并使用 Update 将 DataSet 中所作的更改发回数据源。

名称   说明  

OleDbDataAdapter ()                             初始化 OleDbDataAdapter 类的新实例。  

OleDbDataAdapter (OleDbCommand)                 初始化 OleDbDataAdapter 类的新实例,用指定的 OleDbCommand 作为SelectCommand 的属性。  

OleDbDataAdapter (String, OleDbConnection)     用 SelectCommand 初始化 OleDbDataAdapter 类的新实例。  

OleDbDataAdapter (String, String)             用 SelectCommand 初始化 OleDbDataAdapter 类的新实例。  

OleDbDataAdapter其实是4个OleDbCommand的封装

由insertCommand

UpdateCommand

DeleteCommand

和SelectCommand组成

每一个都是一个OleDbCommand

所以,最终的实现是一样的

不过,OleDbDataAdapter提供了许多的方法,来方便我们对一些特定的数据集合进行操作

比如,填充一个查询结果到DataTable,或DataSet中

其实就是类似于,创建一个OleDbCommand

然后执行Select * from 表名

然后执行ExcuteReader()方法

得到一个IDataReader对象

然后逐行读取数据

并存放到一个集合对象中(如DataTable)

经过测试,如果有大量的数据操作

最好是自己写OleDbCommand,会比OleDbDataAdapter操作数据库快很多:)

更多参考

ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemDataOleDbOleDbCommandMembersTopic.htm

ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemDataOleDbOleDbDataAdapterMembersTopic.htm

______________________________________________________________________________________________

三、OleDbdataCommand与OleDbDataReader

若要创建 OleDbDataReader,必须调用 OleDbCommand 对象的 ExecuteReader 方法,而不能直接使用构造函数。

在使用 OleDbDataReader 时,关联的 OleDbConnection 正忙于为 OleDbDataReader 服务,对 OleDbConnection 无法执行任何其他操作,只能将其关闭。除非调用 OleDbDataReader 的 Close 方法,否则会一直处于此状态。例如,在调用 Close 之前,无法检索输出参数。

如:

using System;

using System.Data;

using System.Data.OleDb;

class Class1

{

     static void Main()

     {

         //string x = “Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind”;

         //ReadData(x);

     }

     public static void ReadData(string connectionString, string queryString)

     {

         using (OleDbConnection connection = new OleDbConnection(connectionString))

         {

             OleDbCommand command = new OleDbCommand(queryString, connection);

             connection.Open();

             OleDbDataReader reader = command.ExecuteReader();

             while (reader.Read())

             {

                 Console.WriteLine(reader[0].ToString());

             }

             reader.Close();

         }

     }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144375.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab经典版_魔方矩阵matlab

    matlab经典版_魔方矩阵matlabfs=44100;dt=1/fs;T16=0.125;t16=[0:dt:T16];[tempk]=size(t16);t4=linspace(0,4*T16,4*k);t8=linspace(0,2*T16,2*k);[tempi]=size(t4);[tempj]=size(t8);mod4=(t4.^4).*exp(-30*(t4.^0.5));mo…

    2022年9月22日
    3
  • centos7 socks5代理_ssh代理上网

    centos7 socks5代理_ssh代理上网关于SOCKS5  SOCKS5是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,或者使通讯更加安全。   正常情况下客户端和服务端的通信:客户端服务端   使用了SOCKS5代理后的通讯:客户端代理服务器服务端#安装ss5依赖yuminstallgcc

    2022年9月29日
    3
  • performSelector的方法[通俗易懂]

    performSelector的方法[通俗易懂]在此我对performSelector系列方法进行了总结1、-(id)performSelector:(SEL)aSelector;-(id)performSelector:(SEL)aSe

    2022年7月1日
    27
  • googleearth离线地图_谷歌插件离线安装

    googleearth离线地图_谷歌插件离线安装Google离线地图API概要解析发布时间:2018-01-17版权: 1.说明离线地图发布有多种方式均可以实现,可以利用ArcGisServer、GeoServer等构建地图Web服务器,还可以使用谷歌地图、百度地图等API进行地图发布服务。本篇主要简单介绍如何调用Google离线地图API实现地图标注、获取坐标、及其他参数的设置。【如何发布Google离线地图】2.实…

    2025年11月28日
    6
  • 查看Linux系统版本内核命令大全

    查看Linux系统版本内核命令大全目录命令一:查看当前系统发行版本详细信息命令二:查看当前系统内核信息命令三:查看当前系统版本信息命令四:查看CPU相关信息命令五:查看系统位数Linux系统内核、发行版本有很多,那么如何查看当前Linux系统的内核信息、Linux系统发行版本等信息呢?Linux百科网分享查询Linux系统详细信息的方法:命令一:查看当前系统发行版本详细信息LSB是LinuxStandardBase的缩写,lsb_release命令用来显示LSB和特定版本的相关信息执行命令:lsb_

    2022年10月12日
    3
  • docker部署redis哨兵集群_redis部署安装

    docker部署redis哨兵集群_redis部署安装Docker安装Docker部署redis在dockerhub上可以看到有redis的官方镜像不去网站,也可以通过如下命令查看有那些镜像可用Dockersearch命令dockersearchredis拉取redis镜像Dockerpull命令这里我们拉取官方的最新版本的镜像:dockerpullredis:latest查看本地镜像Dockerimages命令有redis和hello-world运行容器Dockerrun命令d

    2022年10月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号