用VC实现ODBC数据源设置Word格式文档下载.docx
- 文档编号:21386879
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:14
- 大小:22.19KB
用VC实现ODBC数据源设置Word格式文档下载.docx
《用VC实现ODBC数据源设置Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用VC实现ODBC数据源设置Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
BN_CLICKED,
在出现的voidCTryDlg:
:
OnButton1()函数中用以下ODBCAPI函数语句替换
//TODO:
Addyourcontrolnotificationhandlercodehere这条注释语句:
SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"
MicrosoftAccessDriver(*.mdb)\0"
"
DSN=Try\0DBQ=E:
\\database\\plc.mdb\0DEFAULTDIR=E:
\\database\0\0"
);
您可以根据您不同的设置需要修改上面的语句,SQLConfigDataSource一般有以下几个许可的参数:
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头文件,
所以我们再选择workspace窗口中FileView打开HeaderFiles中try.h,在其中加入#include"
odbcinst.h"
,
如果不加入这个头文件,系统编译时就会显示undeclaredidentifier错误,在完成上述步骤后,
假如我们立即编译并Link这个项目,会发现出现下面的错误:
tryDlg.obj:
errorLNK2001:
unresolvedexternalsymbol_SQLConfigDataSource@16Debug/try.exe:
fatalerrorLNK1120:
1unresolvedexternals
有些人可能因为找不出错误而放弃了,其实这是因为当我们使用SQLConfigDataSource这个API函数时候必须用到odbccp32.dll,
它是Microsoft提供的32位ODBC安装和管理的DLL,如果是16位必须用到odbcinst.dll,odbccp32.dll有一个importlibrary,
所以解决的办法就是把这个odbccp32.lib加到我们的项目中,我们可以打开Project系统菜单项,选AddtoProject子菜单,
在其中选Files项,打开VC安装目录下的vclib目录,文件类型选LibraryFiles(.lib),选择其中Odbccp32.lib后按OK键,
然后重新编译即可通过,运行这个程序,将弹出对话窗,按下SetupODBC按键,之后,您就可以通过控制面板的ODBC数据源管理器或注册表查看运行结果,
您会发现,您的数据库已经成功的注册了。
1.SQLConfigDataSource
函数说明
ODBCAPI提供了动态创建数据源的函数SQLConfigDataSource。
该函数的原型如下:
BOOLSQLConfigDataSource(HWNDhwndParent,WORDfRequest, LPCSTRlpszDriver,LPCSTRlpszAttributes);
参数说明如下:
(1)参数hwndParent用于指定父窗口句柄,在不需要创建数据源对话框时,可以将该参数指定为NULL。
(2)参数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:
删除省缺的数据源说明部分。
(3)参数lpszDriver用于指定ODBC数据源的驱动 程序类别,例如,为了指定Access数据源,
该参数应赋以字符串“MicrosoftAccessDriver(*.mdb)\0”;
对SQLSERVER数据源,则应赋以字符串“SQLServer”。
(4)参数lpszAttributes用于指定ODBC数据源属性。
例如:
①对Access数据源:
"
DSN=MYIMAGE\0DBQ=D:
\\ImageProcess\\image.mdb\0 DEFAULTDIR=D:
\\ImageProcess\0\0"
说明:
该字符串指定数据源名称(DNS)为MYIMAGE;
数据库文件(DBQ)为D:
\\ImageProcess\\image.mdb;
缺省数据库文件路径(DEFAULTDIR)为D:
\\ImageProcess。
②对SQLSERVER数据源:
DSN=MYIMAGE\0SERVER=MYET\0DATABASE=Image"
该字符串指定数据源名称(DSN)为MYIMAGE;
SQLSERVER数据库服务器名(SERVER)为MYET;
数据库名称(DATABASE)为Image。
2.两个需要注意的问题
1)当我们使用SQLConfigDataSourceODBCAPI函数时必须声明包含系统的odbcinst.h头文件,
所以我们再选择workspace窗口中FileView打开HeaderFiles中Imageprocess.h,在其中加入#include“odbcinst.h”。
(2)SQLConfigDataSource这个API函数时候必须用到odbccp32.dll,它是Microsoft提供的32位ODBC安装和管理的DLL,
如果是16位必须用到odbcinst.dll,odbccp32.dll有一个importlibrary,所以解决的办法就是把这个odbccp32.lib加到我们的项目中,
我们可以打开 Project系统菜单项,选AddtoProject子菜单,在其中选Files项,打开VC安装目录下的\vc\lib\目录,文件类型选LibraryFiles(.lib),
选择其中odbccp32.lib后按OK键。
以上代码均在WINxp,VC6.0上编译通过,您可以灵活应用这些办法,让您编写的软件更易于安装维护和使用。
用VC++实现ODBC数据源设置
CND8学院 VC教程 发布日期:
2008年12月11日
--------------------------------------------------------------------------------
通常,我们只能手动打开系统控制面板,运行其中的ODBC数据源管理器,手工配置数据源,但是这项工作对用户而言过于复杂,我们必须考虑用程序替用户完成这些配置工作。
1.SQLConfigDataSource函数说明
ODBCAPI提供了动态创建数据源的函数SQLConfigDataSource。
BOOLSQLConfigDataSource(HWNDhwndParent,WORDfRequest,
LPCSTRlpszDriver,LPCSTRlpszAttributes);
参数说明如下:
(1)参数hwndParent用于指定父窗口句柄,在不需要创建数据源对话框时,可以将该参数指定为NULL。
(2)参数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:
(3)参数lpszDriver用于指定ODBC数据源的驱动
程序类别,例如,为了指定Access数据源,该参数应赋以字符串“MicrosoftAccessDriver(*.mdb)”;
(4)参数lpszAttributes用于指定ODBC数据源属性。
①对Access数据源:
"
DSN=MYIMAGEDBQ=D:
ImageProcessimage.mdb
DEFAULTDIR=D:
ImageProcess"
说明:
ImageProcessimage.mdb;
ImageProcess。
②对SQLSERVER数据源:
DSN=MYIMAGESERVER=MYETDATABASE=Image"
2.两个需要注意的问题
(1)当我们使用SQLConfigDataSourceODBCAPI函数时必须声明包含系统的odbcinst.h头文件,所以我们再选择workspace窗口中FileView打开HeaderFiles中Imageprocess.h,在其中加入#include“odbcinst.h”。
(2)SQLConfigDataSource这个API函数时候必须用到odbccp32.dll,它是Microsoft提供的32位ODBC安装和管理的DLL,如果是16位必须用到odbcinst.dll,odbccp32.dll有一个importlibrary,所以解决的办法就是把这个odbccp32.lib加到我们的项目中,我们可以打开
Project系统菜单项,选AddtoProject子菜单,在其中选Files项,打开VC安装目录下的vclib目录,文件类型选LibraryFiles(.lib),选择其中odbccp32.lib后按OK键。
3.程序代码
从上文看出设置参数lpszAttributes时需要设置数据库文件的路径,为了方便用户的使用,可以将数据库文件保存到该项目的debug文件夹下,通过程序实现自动获取数据库文件路径的功能,代码如下:
CStringszPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
szPath.ReleaseBuffer();
intnPos;
nPos=szPath.ReverseFind(’’);
szPath=szPath.Left(nPos);
CStringszFile=sPath+"
image.mdb"
;
charszAtr[256];
sprintf(szAtr,"
DSN=%s!
DBQ=%s!
DEFAULTDIR=%s!
!
"
MYIMAGE"
szFile,szPath);
intnlen;
nlen=strlen(szAtr);
for(inti=0;
i<
nlen;
i++)
{
if(szAtr[i]==’!
’)
szAtr[i]=’’;
}
if(FALSE==SQLConfigDataSource(NULL,ODBC_ADD_DSN,"
MicrosoftAccessDriver(*.mdb)"
(LPCSTR)szAtr))
AfxMessageBox("
SQLConfigDataSourceFailed"
编译并运行程序后,可以通过控制面板的ODBC数据源管理器或注册表查看运行结果,就会看到数据库已经成功的注册了。
下面再介绍一个通用函数
/*
头文件:
#include<
odbcinst.h>
//SQLConfigDataSource
函数:
CrreateDSN
功能:
动态创建数据源
输入参数:
CStringstr名称
CStringstrDatabase数据库的路径
CStringstrDescription说明
CStringstrServer服务器名称
CStringstrUID用户名
intiCount标识数据库类型,1表示Access数据库;
2表示SQLServer;
3表示Oracle数据库
返回值:
int型
1:
表示创建Access数据源成功
-1:
表示创建Access数据源失败
2:
表示创建SQLServer数据源成功
-2:
表示创建SQLServer数据源失败
3:
表示创建Oracle数据源成功
-3:
表示创建Oracle数据源失败
-4:
表示不支持创建其他类型的数据源
*/
AFX_EXT_CLASSintCrreateDSN(CStringstr,CStringstrDatabase,CStringstrDescription,CStringstrServer,CStringstrUID,intiCount)
{
char*Attributes;
intmlen,i;
Attributes=newchar[256];
switch(iCount)
case1:
sprintf(Attributes,"
DESCRIPTION=%s!
DBQ=%s!
FIL=MicrosoftAccess!
DEFAULTDIR=D:
\Database!
str,strDescription,strDatabase);
mlen=strlen(Attributes);
for(i=0;
mlen;
{
if(Attributes[i]=='
'
)
Attributes[i]='
if(FALSE==SQLConfigDataSource(NULL,ODBC_ADD_DSN,"
(LPCSTR)Attributes))
return1;
else
return-1;
break;
case2:
Description=%s!
server=%s!
Database=%s!
str,strDescription,strServer,strDatabase);
SQLServer"
return2;
return-2;
case3:
ServerName=%s!
UserID=%s!
str,strDescription,strServer,strUID);
OracleinOraHome92"
return3;
return-3;
default:
return-4;
}
}
用VC++实现ODBC数据源设置收藏
加入一个新的用户数据源;
程序类别,例如,为了指定Access数据源,该参数应赋以字符串“MicrosoftAccessDriver(*.mdb)\0”;
(4)参数lpszAttribut
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用VC 实现ODBC数据源设置 VC 实现 ODBC 数据源 设置