CDBC和ADO区别

ODBC(Open DataBase Connection)开放式系统互连,是一种数据库访问协议,提供了访问数据库的API接口。基于ODBC的应用程序,对数据库操作不依赖于具体的DBMS,不直接与DBMS打交道,所有数据库操作由对应DBMS的ODBC驱动程序完成,即:系统中不需要安装DBMS系统,如SQL SERVER 2005,但必须有SQL SERVER 2005的ODBC驱动程序,然后在ODBC管理器中注册数据源后,就可以在应用程序中通过ODBC API访问该数据库。
     ODBC数据库访问技术只适用于windows系统,因为需要在ODBC驱动程序管理器中进行数据源注册,而只有windows才集成了ODBC驱动程序管理器(“控制面板/管理工具/数据源”)。


ADO(ActiveX Data Object)具有跨系统平台特性,它直接对DBMS数据库进行操作,即系


统中必须有DBMS,但不需要驱动程序,不需要注册数据源,所以具有很好的可移植性。


VC++6中这两种技术所涉及到的MFC类:


MFC ODBC类包括CDatabase类 CRecordSet类 CRecoreView类 CFieldExchange类 CDBException类,具体说明请详见任何一本讲述数据库编程技术的参考书。
         ADO是data object,即数据对象的意思,先看一些它包括哪些常用对象:
Command对象 Connection对象 Error对象 RecordSet对象 Field对象 Parameter对象,对应到MFC ADO类,主要有_ConnectionPtr _RecordsetPtr等类。


基于ODBC和ADO的VC++应用程序设计概述

习惯上建立基于文档视图的应用程序时,使用ODBC访问方法,创建应用程序时,需要在step 2 of 6 what database support would you like to include中选择"database view with file support"加载你要访问的数据库,如果在此选择None,后期编程载入数据库相当麻烦,请注意。(如果一个数据库中有多个表,可在此选择一个表进行类定义,默认类名为"工程名+Set",可在应用程序创建完成前最后一步进行改名;然后在编程时建立其他基于CRecordSet的数据库表类)
     如果在step 2中设置访问的数据库和表,则在生成的应用程序框架的XXSet类中会自动加载对数据库和表的连接访问操作,当然你最好重新进行定义;系统只有在必要时才会调用GetDefaultConnection和GetDefaultSQL返回缺省的数据库连接定义和SQL语句。
当然也可以建立基于对话框的数据库访问应用程序,思路差不多,请读者自行参悟。
       习惯上当建立基于对话框的应用程序时,选择使用ADO技术。对于小程序,在StdAfx.h中引入ADO动态连接库,在C***APP中应初始化COM库环境,创建和关闭ADO连接。对于大型项目,通过自定义的ADOConnection类封装数据库操作的各种接口




界面在VC里面做,需要建立exe工程,使用ado或者odbc建立都行,这两者是连接数据库的两种不同方法,ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
    
    ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。 


各自连接数据库和执行sql的方式有点不同,但都可以实现操作数据库。

要在访问数据时判断出应该使用哪一种技术,这并不容易。可能需要公用实用程序来处理多个数据库类型;部分数据可能出现在本地硬盘驱动器上,部分在网络上,还有一部分在主机上。甚至客户安装在设备上的产品也会使这种选择更加困难。例如,你所期待的ODBC 支持级别也许依赖于所安装的Microsoft Office 的版本,因为这个产品不提供ODBC 支持。你还会发现,ADO 类提供的对象和方法要比ODBC 类多。ADO 可以提供程序中绝对必须具有的一些特性——例如,你会发现OLE-DB 和ADO 两者都支持DFX_Currency,但在ODBC中没有对应的功能——但你要想掌握它们也必须付出一定的努力。    ============================================================================ 
    注 使用ADO 而不是ODBC 的一个原因是,ADO 提供的对象和方法比ODBC 多。     ============================================================================   
    选择OLE-DB 或ODBC 时,有几条一般的规则。因为ADO 实际上只是OLE-DB 的包装,所以这些规则也适用于它。下面提供一些基本的原则,可以用来帮助你决定选择OLE-DB还是ODBC。     · 非OLE 环境 如果要访问支持ODBC 的数据库,而该数据库又在不支持OLE 的服务器上,那么ODBC 是最好的选择。 IN2qb*lT@s  
    · 非SQL 环境 ODBC 在处理SQL 时非常出众。处理非SQL 数据库时,OLE-DB则具有非常明显的优势。 
    · OLE 环境 对支持OLE 的服务器来说,选择OLE-DB 还是ODBC 也许是希望各半。如果有ODBC 驱动程序可供利用,那么使用ODBC 是一个好主意;否则,就只有选择OLE-DB了。
    · 所需的互操作性 如果需要可互操作的数据库部件,那么只有选择OLE-DB。 
    其它的问题往往是复合问题,或者至少是失去了可以用来区别这两种技术的方便的规则。例如,有一些特征是ADO 和ODBC 所共有的。其中一个特征是,Visual C++允许你直接访问任一种技术。这意味着,可以完全访问ADO 和ODBC 都提供的每一个特征(是的,这确实不错,但也有缺陷,因为谈到访问,不能说一种技术明显地优于另一种技术)。
    如果做了错误的决定,一些熟悉的技术实际上会帮助你把应用程序从ODBC转移到ADO,或反方向转移。两种技术都依靠数据库对象来管理基础的DBMS,而记录集对象则包含针对DBMS 的查询结果。另外,ODBC 和ADO 都以相似 
的成员来使用数据库和记录集对象。即使要对类和成员名称做一些更改,你仍会发现,ODBC 和ADO程序设计的代码非常相似。
    ODBC 和ADO 都依靠外部驱动程序来完成任务。但是,用ADO 还可以从Microsoft Jet 引擎获得额外的帮助。这个额外的支持是如何使程序设计更加容易的呢?考虑一下,要在哪里执行两个依赖不同引擎的数据库的外部连接。在ODBC 下,必须人工执行全部所需的设置。使用ADO 意味着,Microsoft Jet 引擎会为你执行这些设置。可惜的是,让ADO 做这个工作意味着会失去控制级别和一些灵活性,而这正是你从一开始就想用C++获取数据的原因。     ============================================================================ 
    注 ODBC 和ADO 具有相似的特征,如记录集和数据库对象,尽管MFC 利用这些对象的方式完全不同。
    ============================================================================  
    有一个地方绝对不能使用ADO。如果要访问16 位数据,就不能用ADO。不管你怎么想,都必须用ODBC。然而,几乎没有人还在使用16 位数据库了。大多数的新工程都会使用32 位接口,这意味着会有一个选择。老的工程已经有了嵌入代码的数据访问方法,所以你也实在没有必要在这里做决定。ODBC 的一点不足是,不能像以前使用ADO 那样跟踪事务。以Microsoft Jet引擎使用ADO 时,应该得到事务的工作区级的支持。ODBC 只提供数据库级的事务支持,这就是说,可以从几个不同的工作区跟踪事务(这使得调试非常困难,还可能导致其它类型的问题)。 
    ============================================================================ 
    注释 处理ODBC 数据库时,ADO 提供数据库级的支持;这和ODBC 提供的支持层次是相同的。除非你使用Microsoft Jet 引擎,否则得不到工作区级事务支持的好处。
    ============================================================================   


odbc是32位数据源,是一种较为方便的数据库联接机制,它由于有内嵌的数据库引擎,也就是说,你即使没有相关数据库的库文件,有说是不知道如何自己建立数据库引擎,都可以方便的操作数据库。odbc提供了对大多数数据库的黑盒联接。
ado方式则需要你自己选择数据块引擎,自己建立连接,这样的方式是用户有一定数据库经验的人。


相比之下,odbc简单易用,支持大多数数据库,但是ado更加灵活。
另一方面,odbc不便于在不同操作系统上的迁移,如果你把你的程序刚到另外的机器上,你的程序需要重新建立新的odbc连接,虽然并不复杂。ado就不需要,只要你的数据库是可达的就可以使用。


最后,odbc由于经过独立数据源连接,其间会有一部分而外开销,这部分开销将使你的实际速度变慢一些,如果你做的程序对速度要求敏感,请考虑使用ado方式的。



ODBC 是 开放式数据库互连 是一些标准规范符合规范的数据库就可以通过SQL(结构化查询语言)编写的命令进行操作.理解ODBC是种数据库互连标准就行了,WINDOWS中ODBC配置,只是对数据库进行系统中登记操作一样,不起任何数据服务作用.


OLE DB 是 数据库嵌入对象,是一套组件对象模型 (COM) 接口,可提供对存储在不同信息源中的数据进行统一访问的能力。即:通过这个对象可以对数据库操作.但他只是数据库的一个接口.因为要统一许多接口,它接口也变的复杂繁多,不便于使用.


ADO 是ActiveX? Data Objects,是程序和数据接口的桥梁,我们使用他就可以方便的操作数据库数据.


这么说吧,我们操作ADO,ADO则访问OLEDB(当然可以访问其他的,只要符合ADO接口),OLEDB查询ODBC(也可以不用找他)得到数据接口操作数据.






ODBC?ADO?OLEDB三者区别?
起初,出现的是odbc提供c的函数调用接口,定义了一组通用的数据库API,但速度比较慢,?
ole?db是微软的第三代组件结构,速度较odbc快,而ado是oledb的一个子集,是com组件,更快,更高效。?


odbc,oledb,ado,adox的关系:?
odbc:?曾经的数据库通信标准?


oledb:?在一切对象化的趋势下,ms打算用它取代odbc,?oledb分两种:直接的oledb和面向odbc的oledb,后者架构在odbc上,这样没有自己的oledb提供者的数据库也可以使用oledb的特点了。?


ado:?其实只是一个应用程序层次的界面,它用oledb来与数据库通信。?
adox:?对ado的安全性,维护性(如:创建一个数据库)进行了扩展。??


1.ODBC和ADO关系:
程序是A,数据库是B,A想到B地办事,ODBC就是从A到B的桥,而ADO就是载A到B地的车,这就是他们之间的关系。
2.数据源是一个变量,我们定义的一个数据源,可以随时修改指向不同的数据库,而数据库是个存在的实体。
3.将数据库用作动态网页的内容源时,必须首先创建一个要在其中存储检索数据的记录集。
记录集在存储内容的数据库和生成页面的应用程序服务器之间起一种桥梁作用。记录集由数据库查询返回的数据组成,并且临时存储在应用程序服务器的内存中,以便进行快速数据检索。当服务器不再需要记录集时,就会将其丢弃。记录集也即行集对象(Rowset),每一行对应一个记录(Record)。是数据库操作的核心。
字段 (field)
  一个成员,它表示与对象或类关联的变量。
  在数据库中,表的“列”称为“字段”
  每个字段由若干按照某种界限划分的相同数据类型的数据项组成.
4.用ODBC管理器注册数据源:
(1) 利用ODBC可以统一FoxPro、Access或Oracle数据库的处理方式.


(2) 应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。


(3) 以microsoft access为例,如果在c:\myfile\文件夹里创建了一个名为myexample.mdb的数据库文件,其注册步骤如下:
在控制面板里找到“odbc数据源”图标,打开数据源管理器的交互界面;
此处创建的数据库文件是供本机上的用户使用的,所以这里选择“用户 dsn”;
然后按下“添加”按钮,在弹出的数据源管理器对话框里,为自己所要创建的数据源选择一个驱动程序,本文的数据库文件是用microsoft access创建的,所以要选择“microsoft access driver (*.mdb)”;
按“完成”按钮后,进入一个标题为“odbc microsoft access 安装”的界面,在其中设置“数据源名”为“mydatasource”,选取数据库文件 “c:\myfile\myexample.mdb”,然后确定即可。
这样我们就完成了一个简单的odbc数据源的注册。当然,在以上的步骤中,用户可以根据自己的不同需要,设置不同的选项。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值