ODBC和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连接数据库:?
odbc中提供三种dsn,它们的区别很简单:用户dsn只能用于本用户。
系统dsn和文件dsn的区别只在于连接信息的存放位置不同:系统dsn存放在odbc储存区里,而文件dsn则放在一个文本文件中。?
它们的创建方法就不说了。?
在asp中使用它们时,写法如下:?
A.sql?server:?
用系统dsn:?connstr="DSN=dsnname;?UID=xx;?PWD=xxx;DATABASE=dbname"?
用文件dsn:
?connstr="FILEDSN=xx;?UID=xx;?PWD=xxx;DATABASE=dbname"?
还可以用连接字符串(从而不用再建立dsn):?
connstr="DRIVER={SQL?SERVER};SERVER=servername;UID=xx;PWD=xxx"?
sql数据库迁移另一个硬盘B.access:?
用系统dsn:?connstr="DSN=dsnname"?
(或者为:connstr="DSN=dsnname;UID=xx;PWD=xxx")?
用文件dsn:?connstr="FILEDSN=xx"?
还可以用连接字符串(从而不用再建立dsn):?
connstr="DRIVER={Microsoft?Access?Driver};DBQ=d:\abc\abc.mdb"?
2,用oledb连接数据库:?
A.sql?server:?
connstr="PROVIDER=SQLOLEDB;?
DATA?SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname"?
B.access:?
connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0;?DATA?SOURCE=c:\abc\abc.mdb"?
3.使用UDL文件:?
UDL文件是用来存放数据库连接信息的一个文本文件,有点象文件DSN,不过UDL是针对OLEDB(直接的和面向ODBC的)的。?
UDL的创建方法:?
右击桌面或资源管理器-->新建-->microsoft数据连接?其中的设置工作应该比较清楚了。?
UDL的用法:?
connstr="file?name=e:\abc\abc.udl
ODBC介绍: ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
一个完整的ODBC由下列几个部件组成: 应用程序(Application)。 ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。 驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。 ODBC API。
ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。
数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。
各部件之间的关系如图下图所示:
应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。
驱动程序管理器负责将
应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。 在访问ODBC数据源时需要ODBC驱动程序的支持。用Visual C++ 5.0安装程序可以安装SQL Server、 Access、 Paradox、 dBase、 FoxPro、 Excel、 Oracle 和Microsoft Text等驱动程序.在缺省情况下,VC5.0只会安装SQL Server、 Access、 FoxPro和dBase的驱动程序.如果用户需要安装别的驱动程序,则需要重新运行VC 5.0的安装程序并选择所需的驱动程序。
ADO介绍: ADO的全名是ActiveX Data Object(ActiveX数据对象),是一组优化的访问数据库的专用对象集,它为ASP提供了完整的站点数据库解决方案,它作用在服务器端,提供含有数据库信息的主页内容,通过执行SQL命令,让用户在浏览器画面中输入,更新和删除站点数据库的信息。
ADO主要包括Connection,Recordset和Command三个对象,
它们的主要功能如下: ·Connection对象:负责打开或连接数据库文件; ·Recordset对象:存取数据库的内容; ·Command对象:对数据库下达行动查询指令,以及执行SQL Server的存储过程。
ODBC只能用于关系数据型数据源,ado可访问不同类型的数据源,是基于com的。ado本身是一种OLE DB客户程序,但不依赖于特定的OLE DB服务器,支持所有的OLE DB服务者,通过这些OLE DB服务提供者,ADO 支持客户/服务器模式和基于WEB的数据库应用
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与具
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论