ODBC、OLEDB和ADO之间的关系

转自:ODBC、OLEDB和ADO之间的关系 - CSDN博客  https://blog.csdn.net/wangyy130/article/details/27100809

          ADO,DAO,OBDC,OLEDB到底都是什么呢?有什么区别呢?请帮帮忙!-CSDN论坛  https://bbs.csdn.net/topics/36974

 

不过我知道 OLEDB 是基于 COM 的一组接口规范,用来访问各种数据源,主要由数据源提供商来实现,如 ORACLE、SQL Server、Access。
ADO 是利用 OLEDB 提供的基本接口,加以封装,形成简单易用的一组对象/方法/属性集合,方便快速开发。
ODBC 是在 C 语言级别上实现的一组调用规范,目的也是访问各种数据源,不过现在来说比较老了(个人观点)。
DAO 建立在 MS JET 技术 (最早在 Access 中实现)上的,主要是用来访问所谓的桌面数据库(Access/FoxPro/dBase 等)。

 

应该说,从效率上看,ODBC效率最快。从通用性看,OLEDB最好。从方便性看,ADO和DAO最好。如果你开发的程序是使用ACCESS数据库的,不妨使用DAO。MSDN中的文档说,推荐使用OLEDB或ODBC!

 

odbc,oledb,ado的关系:
  odbc:  曾经的数据库通信标准
  oledb: 在一切对象化的趋势下,ms打算用它取代odbc.
         oledb分两种:直接的oledb和面向odbc的oledb,后者架构在odbc上,这
         样没有自己的oledb提供者的数据库也可以使用oledb的特点了。oledb的效率要高
         于odbc.
  ado:   其实只是一个应用程序层次的界面,它用oledb来与数据库通信。

 

 

 

学习了.net视频之后,对里面涉及到的数据库连接部分中的一些概念表示很无语。网上很多相关资料,但除了网站不一样外,基本上内容都神一样的一致。

       现在,我就通过结合看到的一些资料再加上自己的理解试图去解释一下,有不对的,还请大家指教!

看一张图:

看图中右半部分,我们先来了解一下ODBC这个概念。

1.ODBC:

           要了解ODBC是什么,先了解一下数据库连接的相关知识。其实,在最开始连接数据库时,由于数据库种类繁多,各种数据库连接有不同的需求,这个时期,数据库连接主要依靠各种API函数来进行连接。而ODBC就是将这些API函数封装起来形成统一的接口如上图所示(ODBC上方有一个唯一的接口)。图中所示的ODBC层代表ODBC中各种数据库的驱动器(driver),当SQL语句进入接口后,驱动器管理程序通过辨别将它们分别对应的进入各自的驱动器(driver),由驱动器来讲SQL语句送入各种不同的数据库。

         不知道上面这样写,有没有把这个ODBC给介绍的明白一点儿,学习要生活化,这样才容易理解。我来举个例子。

         我们把ODBC假想成一辆汽车,汽车中有一名司机(driver),把下面的各种数据库假设程不同的工厂。如果司机接收到接口中的命令(SQL语句)——将汽车上的货物运到某个工厂中。那么司机(driver)会根据命令中所指明的货物的类型,自己去辨别到底应该进入哪个工厂才能完成任务。

         大家看,上面这个例子中接收的命令就好像是数据库中的SQL语句,那么司机就好像是驱动器(driver),而不同的工厂就好像是不同种类的数据库。这样理解,有没有简单一点儿呢?

2.OLEDB与ODBC

          好了,再来看一下OLEDB,在上面的例子中我们理解了ODBC,还有我们必须知道,ODBC负责的只是结构化数据库的连接。这样我们就会比较容易理解OLEDB。

OLEDB其实和ODBC类似,都是负责数据库连接的低级接口。而OLEDB不仅支持结构化数据库如SQL server,Oracel Access等,而且还支持非结构化数据源的连接如EXCEL等。

         OLEDB(对象连接和嵌入数据库),是一组对象的集合,一种读写数据的方法。在使用OLEDB时,使用步骤为:初始化OLE、连接到数据源、发出命令、处理结果、释放数据源对象并停止初始化OLE。他可以通过ODBC连接到数据库,也可以之间连接到数据库。当不通过ODBC时,这时在这其中并不涉及到驱动器的成分,因此,此时的数据库连接速度会更快。同时,我们可以知道,只要支持ODBC的数据源是一定能够支持OLEDB的。但是反过来则不一定。

3.ADO

      通过图中,我们看到ADO是位于应用程序和OLEDB之间的。它属于数据库连接中的高层接口。

      是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。

     如何理解上面这个概念呢?其实我们可以联系我们学到的关于ADO控件的相关知识。在原来学习VB的时候,我们如果想要连接到数据库的话,必须加载一个引用空间,里面含有connection,command,recordset等一些相关数据库连接的对象,其实这个引用就是ADO。我们通过这些对象建立对数据库的连接,我们只需编写访问数据库的代码,而并不用关系数据库是如何实现的。

 

以上是我结合上图和学过的知识对这三个概念的理解。很多不透彻的地方,请大家共同交流。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值