【vfp开源代码栏目提醒】:本文主要为网学会员提供“VC应用程序中ODBC数据源的自动注册 - 编程语言”,希望对需要VC应用程序中ODBC数据源的自动注册 - 编程语言网友有所帮助,学习一下!
文章编号:1001--1749(2003)01--0088--04 VC++应用程序中ODBC数据源的自动注册 李村合 (石油大学计算机与通信工程学院,山东 东营267061) 摘要:简要介绍了微软ODBC数据库访问接口,讨论了利用Visualc++语言开发数据库应用 程序时,通过SQLConfigDataSource函数自动注册ODBC数据源(DAN)的方法,井以注册Ac— cess、Visual FoxPro、Excel数据源为例,给出了实现
代码。
解决了用VC++开发的数据库应用程 序的安装过程中需要用户通过ODBC管理器手动配置数据源的问题,提高了程序访问数据的灵 活性。
关键词:数据库}ODBC;数据源;自动注册;Visual C+十;应用程序;sQLC0nfigDatasource 中围分类号:TP311.13 文献标识码:A AUToMATIC REGISTRATIoN oF oDBC DATA万方数据 SoURCE IN VC++APPLICATIoN LI Cun-h8 (College of Computer ur,d Communication Engineering,Univer囊ty of Petroleum(East China),Shandong Dongying 257061,China) Abstract:This paper simply introduces the access interface of Microsoft ODBC database,discusses the method of automatic registration of ODBC data source(DSN)using the SQLCnnfigDataSource function in VC++database application,and gives the sample implementation codes which can automatic register Access、 ViSU“FoxPro and Excd data So.tees.It solves the problem of forcing the u卵r to explicitly use the 0DBC Administrator to set up ODBC data source manuaUy during the installation process of VC++database applica— tions,and gives the flexibility tO access data. Key words:database;ODBC}data source;automatic registration}Vbual C++;application;SQLConfig— DataSource U 弓l吾 微软的VisualC++是一种成熟、强大,并且十分灵活的开发工具。
在数据库应用方面,它支持ODBC、 DAO、ADO等数据库编程。
其中ODBC(Open Database Connectivity)又称开放数据库互连,是微软公司开 放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个重要组成部分,它建立了 一组数据访问规范,并提供了一组对数据库访问的标准API(应用程序编程接口)函数。
一个基于ODBC的 应用程序对数据库的操作不依赖任何DBMs(数据库
管理系统),所有种类的数据库操作均由对应DBMS 的ODBC驱动程序完成。
可见,ODBC最大的优点是能以统一的方式处理所有的数据库。
应用程序通过 收稿日期;2002—05—13——二二—一————————一一 ‘89‘ 1期 李村舍:VC++应用程序中ODBC数据源的自动注册ODBC访问数据库变得简单直接。
因此,VC程序员有相当一部分通过ODBC访问数据库。
但是,在开始 编写自己的数据库应用程序时,程序
设计人员很快就会遇到一个令人头痛的
问题,那就是在访问ODBc 数据源前,必须在ODBC管理器中手工注册DsN(数据源名)。
这样的应用程序要求用户做额外的工作,显 得很不专业。
事实上,通过一些技巧,可以使VC“应用程序能够对用户透明地自动注册DSN。
下面将讨 论如何解决这个问题。
1 SQLConfigDataSource函数 利用ODBC访问数据源以前,必须先注册DSN。
在VC”应用程序中,通过调用函数sQI—Config DataSource,可以实现自动注册DSN。
该函数的使用方法如下。
1.1语法 vc++中的SQI.ConfigDataSource函数可以完成添加、修改或删除数据源等操作,其语法为: BOOI.SQI。
ConfigDataSource(HWND hwndParent,WORD〔Request,LPCSTR lpszDriver,LPCSTR lp— szAttributes)。
1.2参数说明 SQLConfigDataSource共有四个参数,各参数的含义如下: 1.2,1 HwndParent 第一个参数HwndParent指定义窗1:3句柄。
若为NU〔…I则将不显示任何对话框。
否则显示注册数据 源对话框。
一般注册数据源时该参数可取NULL。
1.2,2 fRequest 第二个参数fRequest是一个输入参数,用来指定操作请求的类型,必须是以下常数之一:万方数据 ODBC ADD~DSN:添加(注册)一个新的用户数据源; ODBC CONFIG—DSN:配置(修改)一个已经存在的用户数据源; ODBC REMOVE—DSN:删除一个已经存在的用户数据源; ODBC~ADD—SYS~DSN:添加(注册)一个新的系统数据源; ODBC CONFIG—SYS—DSN:配置(修改)一个已经存在的系统数据源; ODBC REMOVE—SYS—DSN:删除一个已经存在的
系统数据源; ODBC—REMOVE—DEFAULT—DSN:从系统信息中删除缺省的数据源说明部分,同时从数据源配置 文件ODBCINST.INI中删除缺省的驱动程序说明部分。
若〔Request取值为ODBC REMOVE—DE— FAULT—DSN,则SQLConfigDataSource的所有其它参数均自动设置为NULL。
如果其它参数不为 NUI…I那么将被忽略。
当该函数用于注册新的数据源时,〔Request参数一般取值ODBC—ADD—DSN。
1.2.3 lpszDriver 第三个参数lpszDriver是一个输入参数,指定了ODBC驱动程序(通常是与其相关联的DBMS的名 字),它的写法可以参照ODBC管理器的驱动
程序页。
1.2.4 lpszAttributes 第四个参数lpszDriver是一个输入参数,说明了数据源的各种属性,它是由一系列子串构成的,每个 子串的末尾必须有一个“\O”。
具体用法见后面的例子。
1.3函数返回值 sQLconfigDatasource函数的结果是一个布尔型的值。
若函数成功执行,返回TRUE,否则返回 FAI。
SE.。
利用其返回值可判断注册是否成功。
2自动注册DSN实例 下面将讨论用SQLConfigDataSource函数自动注册ODBC数据源的实例,包括注册Access DSN、注 册Visual FoxPro DSN和注册Excel DSN等。
一— — — — — — — — — — — — — — — — — — — — — — 一 物探化探计算技术 95卷 .90. 2.1自动注册AccessDSN 程序段l
演示了在WirLdows 98下注册32位Access DSN的过程。
该段
代码用SQI—ConfigDataSouree 注册了一个名为AccessDB的新的AcceSS数据源。
程序段前面是注册语句,后面是出错处理部分a注意在 使用这段
代码时,要包古afxdb.h头文件,也可以把该文件放到stdafx.h中一 程序段l自动注册Access DSN: #include“afxdb.h” B001。
bODBC=SQLConfigDataSource(NUI,I。
,ODBC—ADD DSN, ’’Microsoft Access Driver(*.mdb)”, (”DSN—AccessDB\O” ”DBQ—c:\\MyMdb\\dbl.mdb\0”)); if(!bODBC)//出错处理 AfxMessageBox(”无法创建DSNI”) return; 在自动
注册DSN时,SQI,ConfigDataSource函数的第一个参数取为NULI。
,将不显示任何对话框。
第 二个参数应该是ODBC—ADD—DSN,表示添加一个新的用户数据源。
第三个参数指定了ODBC驱动程序, 上例为“MicrosoftAccess Driver(*.mdb)”,表示Access数据源,它的具体写法可以参照ODBc管理器的 驱动程序页。
第四个参数说明了数据源和各种属性,它是由一系列子串构成。
每个子串的末尾必须有一个 “\o”。
最重要的属性是“DSN一数据源名”,它指定了数据源的名字,其它属性包括数据库文件名、驱动程序万方数据 版本(DriverId)等信息,其中Driverld可以省略。
在上例中,使用Access驱动程序,数据库文件名用“DBQ 一”关键词标志。
如果对sQI。
ConfigDataSouree函数的第四个参数的设置方法不清楚,那么可以打开Windows的注册 表看一看已注册过的DSN的各项属性。
单击“开始运行”菜单,运行RegEdit可以打开注册表,然后依次打 开HKEY cuRRENT—USER一>Software一>ODBC一>0DBC.INI,就可以看到已注册的DSN,打开 各DSN,则可以看到该DSN的各项属性,然后可以仿照DSN属性来设置第四个参数。
DSN的名字必须唯一,如果要注册的DSN已被注册过,那么SQLConfigDataSource就修改原来DSN 的属性。
2.2 自动注册Visual FoxPro DSN VisualFoxProDSN可以有二种类型:数据库文件(VisualFoxProDatabase(.DBc))、自由表目录(Free Table Directory)。
程序段2给出了自动注册一个新的DBC形式的VisualFoxProDSN的方法。
其中第四个参数的一系 列子串与注册Aeesess数据源有所不同。
除了仍用“DSN=数据源名”指定数据源的名字外,这里用 “SoureeDb一”关键词来指定DBC数据库的名称,用“SoureeType=”关键词来指定数据源的类型,其中 “DBC”表示该Visual FoxPro数据源是DBC形式的数据库文件。
程序段2自动注册Visual FoxPro DBC数据库DSN: #include“afxdb.h” BOOI.bODBC=SQLConfigDataSource(NULI。
.ODBC—ADD DSN ”Microsoft Visual FoxPro Driver”。
(”DSN=VFPDBCt口” ”SoureeDb=C:\\DBCk\db2.dbc\0” ’’SoureeType=DBC\O”)); 一——————————一 —— 1期 车村合:Vc++应!兰!1 21竺苎兰兰竺!翌兰竺 :!!:一一 程序段3给出了自动注册一个新的自由表目录形式的Visual FoxPro DSN的方法。
程序段3自动注册Visual FoxPro自由表目录DSN: #include“’afxdb.h” BOOI。
bODBC=SQ〕LC。
nfigDataSource(NULL,ODBC ADD DSN, ’qVlierosoft Viisual FoxPro Driver”’, CDSN—VFPDBF\0,, ”SourceDb—C:\\DBF\O” ”SourceType—DBF\o”)); 注意这时“sou,rceDb=’’关键词指定的数据库是一个目录名而不是一个文件名。
另外用“SourceType =”关键词指定的数据源的类型是DBF。
2.3自动注册ExcelDSN 程序段4给出了自动注册一个新的Excel DSN的方法,数据源的名字为“EXCEI。
DSN”。
程序段4自动注册ExcdDSN: SQI,ConfigDataSouree(NULL,C)DBC—ADD—DSN, 俚xed Files(*.xls)”. (伍)SN—EXCEI,DSN\0” ”Description=EXCELDSN\O’’ ”FileType=ExceP\o”万方数据 ”DataDirectory=C:\\EXCELDIR\O’’ ’WlaxScanRows一20\0”)); 注意Excel数据源实际上是一个目录(c:\EXCEI.DIR)。
Excel驱动程序用目录名称作为数据源名 字,而该目录下的每个Excel文件(*.xI。
S)都可作为一个数据库表。
3结束语 ODBC是一种应用程序接I:1(API)规范。
它定义了一个标准例程集,使用这些例程可访问数据源中的 数据。
应用程序通过引用API的函数可以直接使用ODBC,或利用数据访问对象(DAO)或远程数据对象 (RDO)来使用ODBC。
但是,在实现ODBC时,我们必须首先配置ODBC环境,进行数据源的注册,这样才 能在对数据库进行编程时,对数据源进行连接、访问和操作。
作者介绍了在VC”应用程序中利用SQL— ConfigDataSource函数自动注册ODBC数据源的方法,并给出了实现
代码,所有
代码均在VC“6.0环境 下调试通过。
除了在文中介绍的方法外,还可利用在Windows控制面板中的ODBC数据源管理工具来进行数据源 注册,或直接修改Windows注册表来进行ODBC数据源的注册。
相比较而言,手工注册需要用户做额外的
工作,显得很不专业,而通过修改注册表进行注册又对用户要求太高,可能会因对注册表的不熟或疏忽造 成不必要的损失。
因此,利用在文中介绍的编程方法实现对ODBC数据源的自动注册是最佳选择。
参考文献: 〔1〕John PaulMualler.希望图书创作室Visual c++6.0从人门到精通〔M〕.北京;北京希望电子出版社,1999 〔2〕Richard C L张艳,译,Visual C++6 0宝典〔M〕北京t电子工业出版社.1999- 〔3〕高晓兴,易秀腰在VB程序中自动配置ODBC数据源的方法〔J〕电脑开发与应用,2000,1 3(11)t39 〔41陆玲.汤彬.用VC开发Windows字符曲线类〔J〕物探化探计算技术,2000,22(3)t 282. :5〕陈峰.季安吉.WindowsC++与MFC编程应用〔J〕.物探化探计算技术,1997,19(4):185. 作者简介:李村合(1966一),男,山东诸城人。
1990年4月研究生
毕业于北方交通大学计算机应用专业, 获工学硕士学位,现为石油大学(华东)
计算机与
通信工程学院计算机科学系副教授、硕士生导师,主要从 事计算机
网络、数据库技术、
软件开发技术等方向的教学和科研工作。