VC++下ODBC的编程
摘要本文在介绍了ODBC(开放性数据库连接,Open DataBase Co
nnectivity)运行机制的基础上,着重讨论了VisualC++2.0下利用ODBC
API及利用MFC进行ODBC编程的两种方法.
关键词ODBC,SQL,数据源,文档/视图结构,DBMS
一、ODBC的发展背景
在传统的数据库领域,数据库应用程序通常是指在特定的数据库
管理系统(DBMS)的支持下,用特定的内嵌式结构化查询语言(SQL)开发
的.这样的数据库应用程序存在如下的缺点:(1)它往往需要一个庞大
的数据库管理系统的支持,对用户的软、硬件要求高;(2)它通常只能
处理一种格式的数据库文件.
与传统的数据库应用程序的实现方法相比,Microsoft的开放性数
据库连接(ODBC)标准则提供了一种新的途径:它建立了一组规范,并提
供了一组高层应用程序调用接口和一套基于动态链接库(DLL)的运行
支持环境.用这样一组接口规范开发的应用程序,使用标准的函数和结
构化查询语言(SQL)对数据库进行操作,不必关心"数据源"(DataSourc
e)来自何种数据库管理系统DBMS,所有的数据库的底层操作都是由相
应的ODBC驱动程序(ODBCDriver)完成.只要有了相应的ODBC驱动程序,
应用程序处理的对象-数据源就可以非常广泛,既可以是本机的某种数
据库格式的文件,如FoxPro的*.dbf文件,也可以是远程数据库文件,如
MicrosoftSQLServer等.
二、ODBC的运行机制
ODBC的体系构架包括五个部分:ODBC管理器(ODBCAdministrator)
、应用程序(Application)、ODBC驱动程序管理器(ODBCDriver Mana
ger)、ODBC驱动程序(ODBCDriver)和数据源(Data Source).图1表示
了ODBC各部分之间的关系.
ODBC管理器在整个ODBC运行机制中起配置环境、登录信息的作用
,它被安装在Control Pannel里(ODBCINST.CPL).通过该工具,可以用
来配置、增添和删除数据源,也可以用来删除、安装ODBC驱动程序.OD
BC管理器把数据源和ODBC驱动程序的信息记录在ODBC.INI、ODBCINST
.INI和ODBCISAM.INI中,或者登录在系统数据库中,ODBC的其他部件通
过读取这些信息,相互作用,应用程序就能够实现对已登录数据库的共
享.
应用程序(Application)的主要任务是通过调用标准的ODBC函数,
提交SQL语句并返回结果,对结果进行处理.
ODBC驱动程序管理器的作用是根据应用程序的要求,调用不同的O
DBC驱动程序.
ODBC驱动程序的作用是实现ODBC函数调用,对指定的数据源执行S
QL语句,并把结果返回给应用程序.有时候,为了符合特定的数据库管
理系统的语法,ODBC驱动程序还会对应用程序的要求作适当修改.这里
,ODBC驱动程序的作用与运行在Windows下的打印机驱动程序的作用非
常相似.
数据源,由用户要访问的数据及与之相关的操作系统、数据库管
理系统和用于访问数据库管理系统所需的网络平台组成.
对应用程序而言,ODBC驱动程序管理器和ODBC驱动程序就像一个
实现ODBC函数调用的整体单元,应用程序感觉不到它们之间的分工合
作关系.整个ODBC的结构是基于一种独特的动态链接库DLL而存在的,
它使得系统完全模块化了.
三、利用ODBC API的C语言ODBC编程
下面以一个典型ODBC数据库访问程序的伪代码为例,说明用ODBCA
PI的C语言进行ODBC编程的一般步骤.该程序从用户接受SQL查询语句,
然后获取结果,集中各行各列的数据.
HENV henv
HDBChdbc
HSTMThstmt
int nCols
SQLALLocEnv(&henv)/*环境申请,获得一个环境句柄*/
SQLAllocConnect(henv,&hdbc)/*连接申请,获得数据库连接句柄
*/
SQLDriverConnect(hdbc,…)/*与具体的ODBC驱动程序和数据源
联系*/
SQLAllocStmt(h