相关服务

  • 《应用科技》2005年第11期摘录:第11期李哗,等:水下机器人控

如发现有乱码,请点击下面链接浏览原文
正文摘录:

第11期李哗,等:水下机器人控制软件中数据库的联接方法·35·图2添加相应的数据库类型和后缀名图3指定数据源名称和源位置图4添加数据源源.而控制程序一般是建立在一个工程文件夹中,改变此文件夹绝对路径的情况很多(比如相互拷贝等),甚至可能更换操作系统用户.这样注册的数据源将随之失效.为此考虑下面的方法.2程序法注册ODBC数据源在整个工程文件改变位置时,ODBC会失效.程序法注册ODBC将起到使注册一劳永逸的效果.下面的函数是Microsoft提供ODBCAPI的有效注册数据源函数.SQLConfigDataSource(NULL,ODBC—ADD—DSN,“MicrosoftAccessDriver(:I:.mdb)\0”,“DSN=AUVlt0DBQ=E:ttContro,t|AUVl.mdb|ODEFAULTDIR=E:\\Control\0\0”)由于程序初始化时自动调用DOC类的构造函数,将上述语句加入CcontrolDoc.cpp的构造函数中.这样程序运行会自动加载注册函数.可以根据不同的设置需要修改上面的语句,SQLC0nfigDatasource一般有以下几个许可的参数: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删除缺省的数据源说明部分.当使用SQLConfigDataSourceODBCAPI函数时必须声明包含系统的odbcinst.h头文件,所以必须在contr01.h中加入#include“odbcinst.h”,如果不加入这个头文件,系统编译时就会显示undeclaredi-dentifier错误.在完成上述步骤后,假如立即编译链接这个程序,仍然发现出现错误.这是因为当使用SQLConngDataS0urce这个API函数时候必须用到odbccp32.dll,它是Microsoft提供的32位ODBC安装和管理DLL.odbccp32.dll有一个importlibrary,解决的办法就是把这个odbccp32.1ib加到程序的项目中.打开Project系统菜单项,选择AddtoProject子菜单,在其中选Files项,打开VC安装目录下的\ve\lib\目录,文件类型选LibraryFiles(.1ib),选中Odbccp32.1ib.重新编译即可通过,运行这个程序,通过控制面板的ODBC数据源管理器或注册表可以查看运行结果,正常情况下,数据库已经成功的注册.现在还存在最后一个问题,即SQLConfigData—Source函数的最后一个参数“DSN=AUVl\0DBQ=E:||Control||AUVl.mdb|0DEFAULTDIR=E:||Control\0\0”中“E:\\Control\\AUVl.mdb”为数据库的绝对路径,每次改变时需手工修改.能不能自动寻找此数据库的路径呢?答案是肯定的.假设数据库在本工程目录/database/下BOOLSetDNSForDB(){charlpBuffer[500];//指定存贮路径的变量lp—BUfferGetCurrentDirectory(500,lpBuffer);//得到当前路径并赋给lpBuffer

阅读此文(图):   点击此处在线翻阅