做一个软件,一个基本的标准是易用性。数据库自动连接和配置就是一个普遍的问题。在使用软件时,用户希望拿来就可以用,并不想做配置数据库、连接数据源的工作。尤其是一些非计算机专业的甚至有些吃力。我也曾经吃过这方面的亏,今天在做一个程序时查了很多资料,最终还是解决了这个问题。(我使用的是vc++做的,后台数据库是access)
在App的Initnstance中添加如下代码,在在程序运行开始时执行,连接数据源。
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"DSN=CaiPiaoData/0"
"Description=彩票数据源/0"
"FileType=Access/0"
"DBQ=.//data.mdb/0"//数据库名称
);
要注意的是,当我们使用SQLConfigDataSource ODBC API函数时必须声明包含系统的odbcinst.h头文件,所以我们再选择workspace窗口中FileView打开Header Files中try.h,在其中加入#include "odbcinst.h",如果不加入这个头文件,系统编译时就会显示undeclared identifier错误,在完成上述步骤后,假如我们立即编译并Link这个项目,会发现出现下面的错误:
tryDlg.obj : error LNK2001: unresolved
external symbol _SQLConfigDataSource@16
Debug/try.exe : fatal error LNK1120:
1 unresolved externals
有些人可能因为找不出错误而放弃了,其实这是因为当我们使用SQLConfigDataSource 这个API函数时候必须用到odbccp32.dll,它是Microsoft提供的32位ODBC安装和管理的DLL,如果是16位必须用到odbcinst.dll,odbccp32.dll有一个import library,所以解决的办法就是把这个odbccp32.lib加到我们的项目中,我们可以打开Project系统菜单项,选Add to Project子菜单,在其中选Files项,打开VC安装目录下的vclib目录,文件类型选Library Files(.lib), 选择其中Odbccp32.lib后按OK键,然后重新编译即可通过,运行这个程序,将弹出对话窗,按下Setup ODBC按键,之后,您就可以通过控制面板的ODBC数据源管理器或注册表查看运行结果,您会发现,您的数据库已经成功的注册了。
要使用数据源,可以先用数据源创建一个CRecordSet的子类,这样数据库中的每个字段都成为这个类的属性。需要用到时候要调用即可。(创建的这个类要引用<afxdb.h>头文件)
-----------------------------------------------------------------------------------------------------
第一次写博客,如有不对之处,愿意接受意见。本篇文章参考了部分网友的内容,由于找不到源出处。在这里表示感谢。