ODBC的结构

如果应用程序调用一个ODBC API函数,ODBC Administrator或Driver Manager会把命令传递给适当的驱动程序。经过翻译之后,驱动程序会将命令传递给特定的后端数据库服务器,采用它能理解的语言或代码。而通过ODBC返回的任何结果或结果集都将会沿着相反的方向传递。ODBC的结构如图所示:


图:ODBC的结构

对Visual Basic应用程序来说,在处理函数调用时,驱动程序和驱动程序管理器(Driver Manage)是一个整体。应用程序用ODBC API来完成以下任务:
(1)请求与数据源建立连接,创建一次会话;
(2)向数据源发出SQL请求;
(3)定义一个缓冲区和数据格式,用来存储SQL请求结果;
(4)提取SQL请求的结果;
(5)处理各种错误;
(6)给用户报告结果;
(7)事务提交或事务撤销;
(8)中断与数据源的连接。
上述结构中,驱动程序管理器(Driver Manager)是一个DLL,它由Microsoft提供,是一个带有入口函数库的动态连接,驱动程序管理器的基本任务是加载驱动程序。此外,还具有以下功能:
(1)根据ODBC.INI文件,把数据源名映射到相应的驱动程序;
(2)处理几个ODBC初始化函数;
(3)进行参数合法化检验。
结构图中SQL Server ODBC驱动程序是一个DLL,用来完成ODBC函数调用并与数据源进行对话。当应用程序调用SQLDriverConnection时,驱动程序管理器加载驱动程序。根据相应程序的要求,驱动程序可以完成以下任务:
(1)建立与数据源的连接;
(2)向数据源提交请求;
(3)根据应用程序的需要,完成数据格式的转换;
(4)把结果返回给应用程序;
(5)申请并控制游标(Cursor);
(6)根据数据源的需要,完成事务初始化。
上述这些功能对应用程序来说都是透明的。
结构图中的物理数据源是DBMS、操作系统和网络平台的一个综合体。
和Windows其他地方一样,为了处理对象,ODBC需使用相应的句柄。在能真正做些什么事情以前,必须先从ODBC或Windows获得这种句柄。ODBC提供了四个句柄:环境、连接、语句和描述符句柄,并且必须在连接数据源之前申请环境句柄。连接句柄的作用是将资源分配给实际的数据源连接。应用程序在与数据源连接以前必须先申请连接句柄,每个连接句柄只与一个环境句柄相连,一个环境句柄可与多个连接句柄相连;语句句柄用于管理对系统发出的实际请求,它必须与一个连接关联在一起,而这个连接也必须与环境关联到一起,应用程序在提交SQL请求以前必须先请求一个语句句柄,每一个语句句柄只与一个连接句柄相连,一个连接句柄可与多个语句句柄相连;描述符句柄则提供一些特殊的描述信息,例如结果集的数据列信息,或SQL语句的动态参数等等。下图显示了环境句柄、连接句柄和语句句柄之间的关系。

每一种SQL数据类型对应一种Visual Basic数据类型。在默认的情况下,驱动程序假设SQL语句中的列或参数的数据类型与连接在其上的Visual Basic数据类型是相对应的。如果Visual Basic数据类型不使用默认的数据类型,应用程序可以用函数SQLBindCol、SQLGetData、SQLBindParameter中的参数fcType来指定另外一个数据类型。在从数据源返回数据之前,驱动程序将数据转换为指定的数据类型。同样,在把数据传给数据源之前,驱动程序将指定的Visual Basic数据类型转换成SQL数据类型。

时间: 2024-11-03 21:59:33

ODBC的结构的相关文章

JDBC和ODBC (转)

异构数据库系统是由多个异构的成员数据库系统组成的数据库系统,异构性体现为各个成员数据库之间在硬件平台.操作系统或数据库管理系统等方面的不同.----Internet上大量信息必须通过数据库系统才能有效管理.由于历史等原因,Internet上的数据库系统不少是异构的.为了在Internet环境下,基于异种系统平台实现对异构数据库的查询和联合使用,必须提供一个独立于特定的数据库管理系统的统一编程界面.----目前许多数据库系统均支持SQL,对于由SQL数据库组成的异构数据库系统,JDBC和ODBC为

简介Java中的JDBC技术

JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口).它由一些Java语言编写的类和界面组成.JDBC为数据库应用开发人员.数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序. 一.ODBC到JDBC的发展历程 说到JDBC,很容易让人联想到另一个十分熟悉的字眼"ODBC".它们之间有没有联系呢?如果有,那么它们之间又是怎样的关系呢? ODBC是O

JDBC接口技术 <转>

作者:郑林峰 张公忠    JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口).它由一些Java语言编写的类和界面组成.JDBC为数据库应用开发人员.数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序.一.ODBC到JDBC的发展历程说到JDBC,很容易让人联想到另一个十分熟悉的字眼"ODBC".它们之间有没有联系呢?如果有,那么它们之间又是怎样

ODBC文件DSN 的结构

odbc                        ODBC文件DSN 的小秘密1. 用附件带的WORDPAD文本编辑器,  建立一后缀名为 .DSN的文件,  格式如下, 然后按文本格式存起来:注意: 格式很重要且必须存为'文本格式',否则不认,  别的编辑器应该也可以.#################################[ODBC]DRIVER=驱动程序名UID=用户名PWD=密码DATABASE=数据库名WSID=服务器名APP=(随便填)SERVER=服务器名#####

如何使用ASP脚本制作异步装载的树形结构(一)

脚本|异步 树形结构是描述层次数据的常见方法.本文介绍的树形结构生成程序主要由一个ASP页面.二个JavaScript函数构成.该树形结构是异步的,也就是说,节点数据仅在必要时才读取,而不是一次性全部发送到客户端. 一.概述 树形结构中所有的节点都必须包含以下属性:本身的ID,父节点的ID,以及本节点的说明(节点文本).本文用到了一个Access数据库Tree.mdb来保存这些节点信息.Tree.mdb包含表tblTree,其定义如下: 字段名称 类型 说明 ElementID 自动编号 节点的

Linux+Informix后台数据库系统《====》WinXX/ODBC/DELPHI/CBUILDER/VB编程设置

odbc|编程|后台|数据|数据库 昆明市商业银行百大支行微机室     本文假定大家的informix使用是从零起步的,将介绍从零至最大化使用informix的各个详细步骤.    本文中关于vi编辑的内容均放在两行等号之间,你要编辑后存盘.一:下载informix-online数据库服务器LINUX试用系统地址:http://www.intraware.com,注册成为informix试用系统的用户,并告诉正确的email地址,然后intraware会给你发一封邮件,告诉你以后下载的本站系统

关于ODBC数据源连接文本

odbc|数据|数据源 关于ODBC数据源连接文本 在<外部数据库的连接原理>一讲中我们说过,ODBC提供对多种数据库的支持,如dBase.Access.MS SQL Server及Oracle,也就是说运用ODBC数据源中所提供的连接代码,我们可以实现对多种数据库的连接.以连接Access数据库为例,ODBC数据源连接文本的格式是: "Driver={数据库驱动程序};Dbq=数据库文件;" 在以上连接文本中,如果数据库跟程序在同一目录下,或者用变量DefaultDir指

Linux/Unix下ODBC的安装、配置与编程

odbc|unix|编程 Linux/Unix下ODBC的安装.配置与编程 齐亮 (cavendish@eyou.com) 2002 年 7 月 本文主要内容是介绍ODBC的简单原理,以及如何在Linux/Unix下进行ODBC的安装.配置与编程. 一. ODBC原理 ODBC 是Open Database Connect 即开放数据库互连的简称,它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件.它通过使用相应应用平台上和所需

MySQL数据库及其ODBC接口的介绍(2) (转载)

mysql|odbc|数据|数据库 发信人: engineer (剑胆琴心~还是得走,sigh...), 信区: Linux 标  题: MySQL数据库及其ODBC接口的介绍(2) (转载) 发信站: BBS 水木清华站 (Mon Aug  9 18:03:20 1999)   [ 以下文字转载自 Database 讨论区 ] [ 原文由 engineer 所发表 ] 五.MySQL的权限管理           MySQL的权限管理非常复杂,可以说这是它的得意之处,安全的管理有利于系统的稳抖