ODBC是依赖分层结构 来实现的,如此可保证其标准 性和开放性。图2所示为ODBC的系统结构 ,它共分为四层:利用程序、驱动程序管理器、驱动程序和数据源。微软公司对ODBC规程进行了规范,它为利用层的开发者和用户供给标准 的函数、语法和差错代码等,微软还供给了驱动程序管理器,它在Windows中是一个动态链接库即ODBC.DLL。驱动程序层由微软、DBMS厂商或第三开发商供给,它必须 符合ODBC的规程,对于Oracle,它是ORA6WIN.DLL,对于SQL Server,它是SQLSRVR.DLL。
@@12W03501.GIF;图2 ODBC系统结构 @@
下面我们详细介绍各层的功效。
1. 利用程序层(Application)
应用 ODBC接口的利用程序可履行以下任务 :
①恳求与数据源的连接 和会话(SQLConnect);
②向数据源发送SQL恳求 (SQLExecDirct或SQLExecute);
③对SQL恳求的效果定义存储区和数据款式;
④恳求效果;
⑤处理 差错;
⑥如果需要 ,把效果返回给用户;
⑦对事务进行把持,恳求履行或回退操作(SQLTransact);
⑧终止对数据源的连接 (SQLDisconnect)。
2. 驱动程序管理器(Driver Manager)
由微软供给的驱动程序管理器是带有输入库的动态连接 库ODBC.DLL,其首要目标是装入驱动程序,此外还履行以下工作:
①处理 几个ODBC初始化调用;
②为每一个驱动程序供给 ODBC函数入口点;
③为ODBC调用供给参数和次序 验证。
3. 驱动程序(Driver)
驱动程序是实现ODBC函数和数据源交互的DLL,当利用程序调用SQL Connect或者SQLDriver Connect函数时,驱动程序管理器装入相应的驱动程序,它对来自利用程序的ODBC函数调用进行应答,遵守其请求履行以下任务 :
①建立 与数据源的连接 ;
②向数据源提交恳求;
③在利用程序需求时,转换数据款式;
④返回效果给利用程序;
⑤将运行差错款式化为标准 代码返回;
⑥在需要 时阐明和处理 光标。
以上这些功效都是对利用程序层功效的具体实现。驱动程序的配置法子 可以划分为以下两种。
(1)单层次(single-tier) 这种法子 下,驱动程序要处理 ODBC调用SQL语句,并直接节制数据库,因此具有数据存取功效。这种配置最常见的是同一台微机之上异种数据库通过ODBC存取,如在Powerbuilder中存取XBase、Excel、Paradox等数据文件,如图3所示。@@12W03502.GIF;图3 一层配置示意图@@
(2)多层次(multiple-tier) 这种配置中驱动程序仅仅处理 ODBC调用,而将SQL语句交给服务器履行,然后返回效果。这种情况 往往是利用程序、驱动程序管理器、驱动程序驻留在客户机端,而数据源和数据存取功效放在服务器端。譬如用Foxpro或Excel存取SQL Server或Oracle上的数据,如图4所示。
@@12W03503.GIF;图4 二层配置示意图@@
有时在以上两者之间加上网关以解决通信 协议 的转换等问题,这时驱动程序要将恳求先传送给网关,如造访 DEC RDB和IBM AS/400时的配置,如图5所示。
@@12W03504.GIF;图5 三层配置示意图@@
4. 数据源
数据源由用户想要存取的数据和它相干的操作系统 、DBMS及网络环境组成。
四、一致性级别
从利用程序观点来看,最理想 的情况 是每个数据源和驱动程序都支撑同一套ODBC函数调用和SQL语句。但是由于形形色色的DBMS在实现上有很大的区别,它们所依附的系统 和环境也各不雷同,在对ODBC支撑的程度 上就不一致。一致性级别(Conformance Levels)建立 了对众多功效的标准 划分,为利用程序和驱动程序供给赞助 和选择的根据。它划定了驱动程序所支撑的ODBC函数和SQL语句的领域,我们可以用SQLGetInfo、SQLGetFunctions、SQLTypeInfo三个函数获知驱动程序所支撑的功效集。ODBC从API和SQL语法两方面划分级别。
1. API的一致性
ODBC将函数调用划分为三级。
(1)核心API 它包孕了与SAG的CLI相匹配的根基功效,包孕:分配与释放环境、连接 及语句句柄;连接 到数据源;筹办并履行 SQL语句或立即履行 SQL语句;为SQL语句和效果列中的参数分配存储器;从效果中检索数据,检索效果的信息;提交和取缔事务处理 ;检索差错信息。
(2)一级API 它包孕了核心API的整个功效,比如用特定驱动程序的对话框连接 到数据源;设置和查询语句值和连接 选项;送部分或整个参数值;检索部分和整个效果;检索目录信息;检索关于驱动程序和数据源的信息。