您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 用VC--实现ODBC数据源设置
用VC++实现ODBC数据源设置.txtcopy(复制)别人的个性签名,不叫抄袭,不叫没主见,只不过是感觉对了。遇到过的事一样罢了。ODBC(OpenDatabaseConectivity)即开放式数据库互联,作为Windows开放性结构的一个重要部分已经为很多的Windows程序员所熟悉,ODBC的工作依赖于数据库制造商提供的驱动程序,使用ODBCAPI的时候,Windows的ODBC管理程序,把数据库访问的请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作,因此,ODBC的存在为我们开发应用数据库程序提供了非常强大的能力和灵活性。为了使ODBC能与数据库一起工作,必须把数据库注册到ODBC驱动程序管理器,这项工作可以通过定义一个DSN或数据源名字来完成。通常,我们只能手动打开系统控制面板,运行其中的ODBC数据源管理器,手工配置数据源,但是这项工作对用户而言过于复杂,我们必须考虑用程序替用户完成这些配置工作。因此许多程序员在发布自己编写的数据库软件时候都希望能有一个优秀的安装程序能够自动设置好ODBC数据源,虽然现在InstallShield等一些优秀的安装制作软件可以帮助我们实现此类功能,但毕竟缺少灵活,程序员不能完全控制它,事实上,我们完全可以自己编写一些程序实现此类功能,实现的方法有几种,一种办法是用程序修改Windows注册表,程序员可以用WindowsAPI函数增改HKEY_LOCAL_MACHINESoftwareODBC下的ODBC.INI中的键值,这种方法比较烦琐。我现在推荐一种在程序中使用ODBCAPI的方法,程序员可以在任何时候都可以用VisualC++编写的程序调用这些API函数来设置ODBC数据源。下面我用MFC写一个程序来演示如何实现这个功能:首先,打开VisualC++,在File菜单上选New,然后选定MFCAppWizard(exe)类的项目,Projectname我们定为try,按下OK键,下一Step1屏幕中选Dialogbased,由于不必用到后面的选项,此时即可按下Finish键,结果系统将生成一个新的项目。完成上述工作后,在左侧Workspace窗口中,选择ResourceView,打开tryresources中的Dialog资源,选择并打开IDD_TRY_DIALOG对话窗口,在Controls菜单窗口中点选按键图标,回到IDD_TRY_DIALOG对话窗口并点击此窗口,将生成一个名叫Button1的按键,选中此按键再按鼠标右键,在弹出式菜单上选Properties选项,在出现的对话框中把Caption项的Button1值改为SetupODBC,关闭此对话框,再选中此按键按鼠标右键,选择ClassWizard,在出现的对话窗口中,ObjectIds选IDC_BUTTON1,Messages中双击BN_CLICKED,此时弹出AddMemberFunction对话窗,Memberfunctionname是OnButton1,按OK键。在Memberfunctions选项中双击onButton1ON_IDC_BUTTION1: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,在其中加入#includeodbcinst.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\0DEFAULTDIR=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能与数据库一起工作,必须把数据库注册到ODBC驱动程序管理器,这项工作可以通过定义一个DSN或数据源名字来完成。通常,我们只能手动打开系统控制面板,运行其中的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)”;对SQLSERVER数据源,则应赋以字符串“SQLServer”。(4)参数lpszAttributes用于指定ODBC数据源属性。例如:①对Access数据源:DSN=MYIMAGEDBQ=D:ImageProcessimage.mdbDEFAULTDIR=D:ImageProcess说明:该字符
本文标题:用VC--实现ODBC数据源设置
链接地址:https://www.777doc.com/doc-1797094 .html