关于ODBC API编程中如何判断DSN是否已存在

      在ODBC编程中,要连接数据库必须先配置好数据源,Windows自带了一个数据源配置工具,可以在控制面板的管理工具中找到,也可以在运行中直接输入odbcad32.exe来打开。但对于程序开发者来说,我们怎么能让用户做这些繁琐的事呢!当然,微软也想到了这点,所以就有了SQLConfigDataSource这个API,它能自动配置数据源,具体参见MSDN。

       那么问题来了,一个程序,一般不会只在用户电脑上运行一次,所以不可能每次程序运行都来配置数据源吧,怎样检测用户电脑上是否已经存在我们需要的数据源了呢?

       其实,Windows中已经存在的数据源都保存在注册表中:

       HKEY_LOCAL_MACHINE\software\odbc\odbc.ini       下保存了所有系统DSN
       HKEY_CURRENT_USER\software\odbc\odbc.ini        下保存了所有用户DSN
       因此,我们可以使用注册表操作API以 HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\DSN名称 为参数打开,判断一下返回值不就行了吗?
代码如下:
HKEY   key;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,   "software\\odbc\\odbc.ini\MYDB ",   0,   KEY_ALL_ACCESS,   &key)   ==   ERROR_SUCCESS)
{
    DSN存在;
}
else
{
    DSN不存在;
}
RegCloseKey(key);

posted @ 2010-12-06 21:12  swtar  阅读(414)  评论(0编辑  收藏  举报