用Visual C++程序实现设置ODBC数据源

原创 2001年05月10日 21:38:00

用Visual C++程序实现设置ODBC数据源

苏州供电局信息中心
唐一均

---- ODBC(Open Database Conectivity)即开放式数据库互联,作为Windows开放性结构的一个重要部分已经为很多的Windows程序员所熟悉,ODBC的工作依赖于数据库制造商提供的驱动程序,使用ODBC API的时候,Windows的ODBC管理程序,把数据库访问的请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作,因此,ODBC的存在为我们开发应用数据库程序提供了非常强大的能力和灵活性。

---- 为了使ODBC能与数据库一起工作,必须把数据库注册到ODBC驱动程序管理器,这项工作可以通过定义一个DSN或数据源名字来完成。通常,我们只能手动打开系统控制面板,运行其中的ODBC数据源管理器,手工配置数据源,但是这项工作对用户而言过于复杂,我们必须考虑用程序替用户完成这些配置工作。

---- 因此许多程序员在发布自己编写的数据库软件时候都希望能有一个优秀的安装程序能够自动设置好ODBC数据源,虽然现在InstallShield等一些优秀的安装制作软件可以帮助我们实现此类功能,但毕竟缺少灵活,程序员不能完全控制它,事实上,我们完全可以自己编写一些程序实现此类功能,实现的方法有几种,一种办法是用程序修改Windows注册表,程序员可以用Windows API函数增改HKEY_LOCAL_MACHINE/Software/ODBC下的ODBC.INI中的键值,这种方法比较烦琐。我现在推荐一种在程序中使用ODBC API的方法,程序员可以在任何时候都可以用Visual C++编写的程序调用这些API函数来设置ODBC数据源。

---- 下面我用MFC写一个程序来演示如何实现这个功能:

---- 首先,打开Visual C++,在File菜单上选New,然后选定MFC AppWizard(exe)类的项目,Project name我们定为try,按下OK键,下一Step 1屏幕中选Dialog based,由于不必用到后面的选项,此时即可按下Finish键,结果系统将生成一个新的项目。完成上述工作后,在左侧Workspace窗口中,选择ResourceView,打开try resources中的Dialog资源,选择并打开IDD_TRY_DIALOG对话窗口,在Controls菜单窗口中点选按键图标,回到IDD_TRY_DIALOG对话窗口并点击此窗口,将生成一个名叫Button1的按键,选中此按键再按鼠标右键,在弹出式菜单上选Properties选项,在出现的对话框中把Caption项的Button1值改为Setup ODBC,关闭此对话框,再选中此按键按鼠标右键,选择ClassWizard,在出现的对话窗口中,Object Ids选IDC_BUTTON1,Messages中双击BN_CLICKED,此时弹出Add Member Function对话窗,Member function name是OnButton1,按OK键。在Member functions选项中双击onButton1 ON_IDC_BUTTION1:BN_CLICKED,在出现的void CTryDlg::OnButton1()函数中用以下ODBC API函数语句替换 //TODO: Add your control notification handler code here这条注释语句:

  SQLConfigDataSource(NULL,ODBC_ADD
_SYS_DSN,"Microsoft Access Driver (*.mdb)/0","
DSN=TryDB/0DBQ=D://Database/try.mdb/0DEFAULTDIR=D://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: 删除省缺的数据源说明部分。需要注意的是,当我们使用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安装目录下的/vc/lib/目录,文件类型选Library Files(.lib), 选择其中Odbccp32.lib后按OK键,然后重新编译即可通过,运行这个程序,将弹出对话窗,按下Setup ODBC按键,之后,您就可以通过控制面板的ODBC数据源管理器或注册表查看运行结果,您会发现,您的数据库已经成功的注册了。

C++使用ODBC链接MYSQL出现乱码问题

首先来看一看乱码问题:       首先需要保证 数据库字符集的问题: 修改mysql配置文件: 找到my.ini配置文件 在mysqld加入 character-set-server=ut...
  • u011001084
  • u011001084
  • 2017年01月06日 11:12
  • 10389

Visual C++ 编程深入 使用ODBC数据库

Visual C++ 提供提供了多种数据库访问技术,其中最主要的是开放式数据库连接(Open Database Connectivity, ODBC)和数据存取对象(Data Access Obje...
  • ForestRound
  • ForestRound
  • 2016年10月04日 09:46
  • 894

C/C++使用ODBC连接MSSQL数据库

在C/C++中通过ODBC连接MSSQL数据库的一个全部过程,希望能帮助到有需要的人。...
  • nanyouWSH
  • nanyouWSH
  • 2015年08月15日 14:49
  • 5083

c++封装odbc类

[cpp] view plaincopyprint? //DBUtil.h   //By 小E QQ592646022   #include    #include...
  • wanghelou123
  • wanghelou123
  • 2015年01月27日 10:23
  • 792

C++读写excel文件(一)—— 用ODBC读写(by yukin_xue)

优点: 代码少,结构简单,好理解。 缺点: 貌似只有先通过ODBC写后的excel内容,才能通过ODBC读出来,如果随便拿个excel文件用ODBC来读,不成功。会报错: Warning: ODBC ...
  • yukin_xue
  • yukin_xue
  • 2013年09月06日 11:30
  • 7562

添加和使用ODBC数据源

1.添加用户DSN         我使用的是VC++6.0连接SQL Server2000数据库。首先将SQL Server2000正确进行安装,并且安装它的SP3和SP4补丁。在安装SP3补丁的...
  • chenbinqq
  • chenbinqq
  • 2013年12月07日 16:14
  • 1657

ODBC 连接 ORACLE数据库 代码

最近的任务是封装一个ODBC连接数据库的类,查找了不少资料,对ODBC的函数有所了解,记录一下心得 windows下操作数据库主要的功能有:连接数据库,绑定插入数据,批量绑定插入(多为结构体),读取...
  • wpf19920229
  • wpf19920229
  • 2015年05月30日 13:38
  • 1143

C通过unixODBC连接数据库

首先进程数据库的相关配置,主要是修改/etc/odbcinst.ini和/etc/odbc.ini两个文件。(这是它们的默认位置,有时也可能在/usr/local/etc/或者/usr/local/u...
  • yangbingzhou
  • yangbingzhou
  • 2015年04月30日 09:59
  • 1772

mysql怎样配置ODBC数据源

http://download.csdn.net/detail/kexinyu915/5242898 事先配置相应的环境 mysql(mysql安装程序) mysql...
  • xingxiupaioxue
  • xingxiupaioxue
  • 2016年01月09日 14:43
  • 1510

win10操作系统的ODBC数据源配置sqlserver数据库

ODBC数据源全称是开放数据库互连(Open Database Connectivity),在微软公司开放的数据库结构中的一部分,其实就是一个应用程序的接口,主要用于提供数据库的编写应用程序的能力。 ...
  • cuiyaoqiang
  • cuiyaoqiang
  • 2016年02月21日 17:42
  • 12448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Visual C++程序实现设置ODBC数据源
举报原因:
原因补充:

(最多只允许输入30个字)