关于ODBC API编程中如何判断DSN是否已存在
2010-12-06 21:08
295 查看
在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);
那么问题来了,一个程序,一般不会只在用户电脑上运行一次,所以不可能每次程序运行都来配置数据源吧,怎样检测用户电脑上是否已经存在我们需要的数据源了呢?
其实,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);
相关文章推荐
- 关于ODBC API编程中如何判断DSN是否已存在
- 关于如何判断jQuery中对象是否存在的问题
- 关于如何使用ajax异步判断用户名是否存在
- VB之Win32 API编程--判断本地或远程文件是否存在的简易方法
- 在SQL中如何判断指定的列名是否存在
- 一个算法:关于如何判断两个时间是否在允许误差内相等
- 如何用js判断document里的一个对象是否存在?或是是否有效
- 如何判断一个单向链表是否存在循环的经典方法
- php关于使用strpos方法判断字符串中是否存在字符串的一些细节说明
- 171211之如何判断用户名在数据库中是否存在
- sqlserver中如何判断一个约束是否存在?
- 关于javascript如何判断某个字符是否占用两个字符的讨论
- 如何判断文件是否存在?
- SQL server 2000 如何判断临时表是否存在
- oracle 基础和管理 如何判断某个表中是否存在某个字段?
- 如何判断事件是否存在?
- 如何判断多个字段组成的关键字在另外一张表中是否存在
- 如何判断Javascript对象是否存在
- python中如何判断路径是否存在
- JQuery如何判断标签指定属性是否存在