Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14498114
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:58:51

下载本文示例代码
  为了使ODBC能与数据库一起工作,必须把数据库注册到ODBC驱动程序管理器,这项工作可以通过定义一个DSN或数据源名字来完成。通常,我们只能手动打开系统控制面板,运行其中的ODBC数据源管理器,手工配置数据源,但是这项工作对用户而言过于复杂,我们必须考虑用程序替用户完成这些配置工作。   1. SQLConfigDataSource 函数说明   ODBC API提供了动态创建数据源的函数SQLConfig DataSource。该函数的原型如下: BOOL SQLConfigDataSource ( HWND hwndParent,WORD fRequest, LPCSTR lpszDriver,LPCSTR lpszAttributes );   参数说明如下:   (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数据源,该参数应赋以字符串“Microsoft Access Driver (*.mdb)\0”;对SQL SERVER数据源,则应赋以字符串“SQL Server”。   (4)参数lpszAttributes用于指定ODBC数据源属性。例如:   ① 对Access数据源: "DSN= MYIMAGE\0 DBQ=D:\\ImageProcess\\image.mdb\0 DEFAULTDIR= D:\\ImageProcess\0\0"   说明:该字符串指定数据源名称(DNS)为MYIMAGE;数据库文件(DBQ)为D:\\ImageProcess\\image.mdb ;缺省数据库文件路径(DEFAULTDIR) 为D:\\ImageProcess 。   ② 对SQL SERVER数据源: "DSN=MYIMAGE\0 SERVER=MYET\0 DATABASE=Image"   说明:该字符串指定数据源名称(DSN)为MYIMAGE;SQLSERVER 数据库服务器名(SERVER)为 MYET;数据库名称(DATABASE)为Image。   2 .两个需要注意的问题   (1)当我们使用SQLConfigDataSource ODBC API函数时必须声明包含系统的odbcinst.h头文件,所以我们再选择workspace窗口中FileView打开Header Files中Imageprocess.h,在其中加入#include“odbcinst.h”。   (2)SQLConfigDataSource 这个API函数时候必须用到odbccp32.dll,它是Microsoft 提供的32 位ODBC安装和管理的DLL,如果是16 位必须用到odbcinst.dll,odbccp32.dll 有一个import library,所以解决的办法就是把这个odbccp32.lib加到我们的项目中,我们可以打开 Project系统菜单项,选Add to Project子菜单,在其中选Files项,打开VC安装目录下的\vc\lib\目录,文件类型选Library Files(.lib) , 选择其中odbccp32.lib后按OK键。   3 .程序代码   从上文看出设置参数lpszAttributes时需要设置数据库文件的路径,为了方便用户的使用,可以将数据库文件保存到该项目的debug文件夹下,通过程序实现自动获取数据库文件路径的功能,代码如下: CString szPath; GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH 1),MAX_PATH); szPath.ReleaseBuffer (); int nPos; nPos=szPath.ReverseFind (’\\’); szPath=szPath.Left (nPos); CString szFile = sPath "\\image.mdb"; char szAtr[256]; sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!! ","MYIMAGE", szFile,szPath); int nlen; nlen = strlen(szAtr); for (int i=0; i   为了使ODBC能与数据库一起工作,必须把数据库注册到ODBC驱动程序管理器,这项工作可以通过定义一个DSN或数据源名字来完成。通常,我们只能手动打开系统控制面板,运行其中的ODBC数据源管理器,手工配置数据源,但是这项工作对用户而言过于复杂,我们必须考虑用程序替用户完成这些配置工作。   1. SQLConfigDataSource 函数说明   ODBC API提供了动态创建数据源的函数SQLConfig DataSource。该函数的原型如下: BOOL SQLConfigDataSource ( HWND hwndParent,WORD fRequest, LPCSTR lpszDriver,LPCSTR lpszAttributes );   参数说明如下:   (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数据源,该参数应赋以字符串“Microsoft Access Driver (*.mdb)\0”;对SQL SERVER数据源,则应赋以字符串“SQL Server”。   (4)参数lpszAttributes用于指定ODBC数据源属性。例如:   ① 对Access数据源: "DSN= MYIMAGE\0 DBQ=D:\\ImageProcess\\image.mdb\0 DEFAULTDIR= D:\\ImageProcess\0\0"   说明:该字符串指定数据源名称(DNS)为MYIMAGE;数据库文件(DBQ)为D:\\ImageProcess\\image.mdb ;缺省数据库文件路径(DEFAULTDIR) 为D:\\ImageProcess 。   ② 对SQL SERVER数据源: "DSN=MYIMAGE\0 SERVER=MYET\0 DATABASE=Image"   说明:该字符串指定数据源名称(DSN)为MYIMAGE;SQLSERVER 数据库服务器名(SERVER)为 MYET;数据库名称(DATABASE)为Image。   2 .两个需要注意的问题   (1)当我们使用SQLConfigDataSource ODBC API函数时必须声明包含系统的odbcinst.h头文件,所以我们再选择workspace窗口中FileView打开Header Files中Imageprocess.h,在其中加入#include“odbcinst.h”。   (2)SQLConfigDataSource 这个API函数时候必须用到odbccp32.dll,它是Microsoft 提供的32 位ODBC安装和管理的DLL,如果是16 位必须用到odbcinst.dll,odbccp32.dll 有一个import library,所以解决的办法就是把这个odbccp32.lib加到我们的项目中,我们可以打开 Project系统菜单项,选Add to Project子菜单,在其中选Files项,打开VC安装目录下的\vc\lib\目录,文件类型选Library Files(.lib) , 选择其中odbccp32.lib后按OK键。   3 .程序代码   从上文看出设置参数lpszAttributes时需要设置数据库文件的路径,为了方便用户的使用,可以将数据库文件保存到该项目的debug文件夹下,通过程序实现自动获取数据库文件路径的功能,代码如下: CString szPath; GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH 1),MAX_PATH); szPath.ReleaseBuffer (); int nPos; nPos=szPath.ReverseFind (’\\’); szPath=szPath.Left (nPos); CString szFile = sPath "\\image.mdb"; char szAtr[256]; sprintf(szAtr,"DSN=%s!DBQ=%s!DEFAULTDIR=%s!! ","MYIMAGE", szFile,szPath); int nlen; nlen = strlen(szAtr); for (int i=0; i 下载本文示例代码


Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源Visual C 实现自动配置ODBC数据源
阅读(226) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~