关于ODBC API编程中如何判断DSN是否已存在
2010-12-06 21:12
337 查看
在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是否已存在
- 关于如何使用ajax异步判断用户名是否存在
- 关于如何判断jQuery中对象是否存在的问题
- VB之Win32 API编程--判断本地或远程文件是否存在的简易方法
- 如何正确判断Session变量是否存在
- 如何判断Javascript对象是否存在(转载)
- 在 jQuery 中如何判断对象是否存在
- SQL Server中如何判断一个数据库是否存在
- 如何判断单链表是否存在环
- Mac OS X开发中在程序运行时判断某个API是否存在
- 如何判断数据库,表或字段是否存在
- Android如何判断应用或Activity是否存在
- 关于javascript如何判断某个字符是否占用两个字符的讨论
- c# 如何判断mysql表明是否存在。。。sql同理
- PHP 远程图片:如何判断远程图片是否存在
- Android的SQLite如何判断一列是否存在
- 如何在shell脚本中判断文件或者文件夹是否存在?
- oracle 基础和管理 如何判断某个表中是否存在某个字段?
- 20140810 关于js中如何判断一个对象{}是否为空
- 如何用js判断dom是否有存在某class的值