关于ODBC

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在传统方式中,开发人员要熟悉多个DBMS及其API,一旦DBMS端出现变动,则往往导致用户端系统重新编建或者源代码的修改,这给开发和维护工作带来了很大困难。

在ODBC方式中,不管底层网络环境如何,也无论采用何种DBMS,用户在程序中都使用同
一套标准代码,无须逐个了解各DBMS及其API的特点,源程序不因底层的变化而重新编译或修改,从而减轻了开发维护的工作量,缩短了开发周期。

由于ODBC思想上的先进性,受到了众多厂家与用户的青睐,成为一种广为接受的标准。

目前,已经有130多家独立厂商宣布了对ODBC的支持,常见的DBMS都提供了ODBC 的驱动接口,这些厂商包括Oracle、Sybase、Informix、Ingres、IBM(DB/2)、DEC(RDB)、HP(ALLBASE/SQL)、Borland(Paradox)等。

目前,ODBC是客户机/服务器系统中的一个重要支持技术。

概括起来,ODBC具有以下灵活的特点:
(1)使用户程序有很高的互操作性,相同的目标代码适用于不同的DBMS。

(2)由于ODBC的开放性,它为程序集成提供了便利,为客户机/服务器结构提供了技术支持。

(3)由于应用与底层网络环境和DBMS分开,简化了开发维护上的困难。

ODBC体系结构(1)
ODBC技术为应用程序提供了一套CLI(Call-Leve Interface,调用层接口)函数库和基于DLL(Dynamic Link Library,动态链接库)的运行支持环境。

使用ODBC开发数据库应用程序时,在应用程序中调用标准的ODBC函数和SQL语句,通过可加载的驱动程序将逻辑结构映射到具体的DBMS或者应用系统所使用的系统。

换言之,连接其他数据库和存取这些数据库的低层操作由驱动程序驱动各个数据库完成。

ODBC的卓越贡献是使应用程序具有良好的互用性和可移植性,并且具备同时访问多种DBMS的能力,从而克服了传统数据库应用程序的缺陷。

对用户来说,ODBC驱动程序屏蔽掉了不同的DBMS的差异。

ODBC是一个分层的体系结构,这样可保证其标准性和开放性,如图6-7所示。

ODBC由纵向4部分构成,其主要功能如下:
(1)ODBC数据库应用程序(Application):用宿主语言和ODBC函数编写的应用程序用于访问数据库。

其主要任务是管理安装的ODBC驱动程序和管理数据源。

(2)驱动程序管理器(Driver Manager):驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。

其任务是管理ODBC驱动程序,为应用程序加载、调用和卸载DB驱动程序,是ODBC中最重要的部件。

(3)DB驱动程序(DBMS Driver):是一些DLL,提供了ODBC和数据库之间的接口。

处理ODBC函数,向数据源提交用户请求执行的SQL语句。

(4)数据源(Data Source):是DB驱动程序与DBS之间连接的命名。

数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。

微软公司对ODBC规程进行了规范,它为应用层的开发者和用户提供标准的函数、语法和错误代码等,微软还提供了驱动程序管理器,它在Windows中是一个动态链接库,即ODBC32.DLL。

驱动程序层由微软、DBMS厂商或第三开发商提供,它必须符合ODBC的规程。

例如,对于SQL Server,它的驱动程序是SQLSRV32.DLL。

可以从ODBC数据源管理的驱动程序页得到,如图6-8所示。

下面详细介绍各层的功能:
(1)ODBC数据库应用程序(Application)
使用ODBC接口的应用程序可执行以下任务:
①请求与数据源的连接和会话(SQLConnect)。

②向数据源发送SQL请求(SQLExecDirct或SQLExecute)。

③对SQL请求的结果定义存储区和数据格式。

④请求结果。

⑤处理错误。

⑥如果需要,把结果返回给用户。

⑦对事务进行控制,请求执行或回退操作(SQLTransact)。

⑧终止对数据源的连接(SQLDisconnect)。

(2)驱动程序管理器(Driver Manager)
应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。

这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。

这样,应用程序就可以通过驱动程序管理器与数据库交换信息。

驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。

由微软提供的驱动程序管理器是带有输入库的动态连接库ODBC32.DLL,其主要目的是装入驱动程序,此外还执行以下工作:
①处理几个ODBC初始化调用。

②为每一个驱动程序提供ODBC函数入口点。

③为ODBC调用提供参数和次序验证。

(3)驱动程序(Driver)
驱动程序是实现ODBC函数和数据源交互的DLL,当应用程序调用SQL Connect或者SQLDriver Connect函数时,驱动程序管理器装入相应的驱动程序,它对来自应用程序的ODBC函数调用进行应答,按照其要求执行以下任务:
①建立与数据源的连接。

②向数据源提交请求。

③在应用程序需求时,转换数据格式。

④返回结果给应用程序。

⑤将运行错误格式化为标准代码返回。

⑥在需要时说明和处理光标。

以上这些功能都是对应用程序层功能的具体实现。

驱动程序的配置方式可以划分为以下两种。

①单层次(single-tier):这种方式下,驱动程序要处理ODBC调用SQL语句,并直接操纵数据库,因此具有数据存取功能。

这种配置最常见的是同一台微机之上异种数据库通过ODBC存取,如在PowerBuilder中存取Excel、Paradox等数据文件,如图6-9所示。

ODBC体系结构(2)
②多层次(multiple-tier):这种配置中驱动程序仅处理ODBC调用,而将SQL语句交给服务器执行,然后返回结果。

这种情况往往是应用程序、驱动程序管理器、驱动程序驻留在客户机端,而数据源和数据存取功能放在服务器端。

例如,用FoxPro或PowerBuilder 存取SQL Server或Oracle上的数据,如图6-10所示。

有时在以上两者之间加上网关以解决通信协议的转换等问题,这时驱动程序要将请求先传送给网关,如图6-11所示。

(4)数据源
数据源(Data Source Name,DSN)是驱动程序与DBMS连接的桥梁,数据源不是DBMS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。

在连接中,用数据源名来代表用户名、服务器名、连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。

数据源由用户想要存取的数据和它相关的操作系统、DBMS及网络环境组成。

数据源分为如下3类。

用户数据源:ODBC用户数据源存储了如何与指定数据库提供者连接的信息。

只对当前用户可见,而且只能用于当前机器上。

这里的当前机器是指这个配置只对当前的机器有效,而不是说只能配置本机上的数据库。

它可以配置局域网中另一台机器上的数据库。

系统数据源:ODBC系统数据源存储了如何指定数据库提供者连接的信息。

系统数据源对当前机器上的所有用户都是可见的。

也就是说在这里配置的数据源,只要是这台机器的用户都可以访问。

文件数据源:ODBC文件数据源允许用户连接数据提供者。

文件DSN可以由安装了相同驱动程序的用户共享。

这是介于用户DSN和系统DSN之间的一种共享情况。

创建数据源最简单的方法是使用ODBC驱动程序管理器,具体的设置后文有介绍。

ODBC的出现给用户描绘了一个诱人的前景,即网络中的Windows用户可以方便地访问各种数据库。

现在,在微软推出的许多产品中都提供了ODBC支持,同时其他一些应用软件和开发工具也提供了对ODBC的支持。

因此用户只要安装不同的ODBC驱动程序,即可存取相应的数据库产品,而不管用户使用何种前台应用软件,也不管后台是何种数据库,这个存取的过程是一致的。

但是ODBC应用存在着一些问题。

首先,它的层次比较多,表现在性能上比专有的API 要慢,这是其标准化和开发性所带来的必要的代价;其次,由于ODBC规定了3个层次的一致性级别,应用程序与驱动程序之间的匹配就会出现一些问题和矛盾,例如,某些驱动程序支持的级别比较低,而应用程序要求的比较高。

相关文档
最新文档