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