SQLConfigDataSource Function

一致性
引入的版本:ODBC 1.0

摘要
SQLConfigDataSource 添加、修改或删除数据源。

也可以使用 ODBCCONF.EXE访问 SQLConfigDataSource 的功能。

语法

  
BOOL SQLConfigDataSource(  
     HWND     hwndParent,  
     WORD     fRequest,  
     LPCSTR   lpszDriver,  
     LPCSTR   lpszAttributes);  

自变量

hwndParent
[输入]父窗口句柄。 如果句柄为 null,函数将不会显示任何对话框。

fRequest
[输入]请求的类型。 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:从系统信息中删除默认数据源规范部分。 (它还从系统信息中的Odbcinst.ini项中删除默认驱动程序规范部分。此 fRequest 执行与已弃用 的 SQLRemoveDefaultDataSource 函数相同的函数。) 指定此选项时,对 SQLConfigDataSource 的调用中的所有其他参数都应为 NUL;如果它们不是 NULL,则将忽略它们。

lpszDriver
[输入]驱动程序说明 (通常向用户显示的关联 DBMS) 的名称,而不是物理驱动程序名称。

lpszAttributes
[输入]以关键字值对形式以 null 结尾的双重属性列表。 有关详细信息,请参阅 ConfigDSN

返回

如果成功,函数将返回 TRUE;如果失败,则返回 FALSE。 如果在调用此函数时系统信息中不存在任何条目,则函数返回 FALSE。

诊断

SQLConfigDataSource 返回 FALSE 时,可以通过调用 SQLInstallerError 获取关联的 *pfErrorCode 值。 下表列出了 SQLInstallerError 可返回的 *pfErrorCode 值,并说明了此函数上下文中的每个值。

*pfErrorCode 错误 说明
ODBC_ERROR_GENERAL_ERR 常规安装程序错误 发生错误,其中没有特定的安装程序错误。
ODBC_ERROR_INVALID_HWND 无效的窗口句柄 hwndParent 参数无效或为 NULL。
ODBC_ERROR_INVALID_REQUEST_TYPE 请求类型无效 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
ODBC_ERROR_INVALID_NAME 驱动程序或翻译器名称无效 lpszDriver 参数无效。 无法在注册表中找到它。
ODBC_ERROR_INVALID_KEYWORD_VALUE 无效的关键字-值对 lpszAttributes 参数包含语法错误。
ODBC_ERROR_REQUEST_FAILED 请求 失败 安装程序无法执行 fRequest 参数请求的操作。 对 ConfigDSN 的调用失败。
ODBC_ERROR_LOAD_LIBRARY_FAILED 无法加载驱动程序或翻译器安装库 无法加载驱动程序设置库。
ODBC_ERROR_OUT_OF_MEM 内存不足 由于内存不足,安装程序无法执行函数。

注释

SQLConfigDataSource 使用 lpszDriver 的值从系统信息中读取驱动程序的安装 DLL 的完整路径。 它加载 DLL,并使用传递给它的相同参数调用 ConfigDSN

如果 SQLConfigDataSource 无法找到或加载安装 DLL,或者用户取消对话框,则 SQLConfigDataSource 将返回 FALSE。 否则,它将返回从 ConfigDSN 接收的状态。

SQLConfigDataSource 将 System DSN fRequest映射到 User DSN fRequest (ODBC_ADD_SYS_DSN ODBC_ADD_DSN,将ODBC_CONFIG_SYS_DSN映射到ODBC_CONFIG_DSN,将ODBC_REMOVE_SYS_DSN映射到 ODBC_REMOVE_DSN) 。 为了区分用户和系统 DSN, SQLConfigDataSource 根据下表设置安装程序配置模式。 在返回之前, SQLConfigDataSource 会将配置模式重置为 BOTHDSN。 驱动程序) 实现的 ConfigDSN (应调用 SQLWriteDSNToIniSQLWritePrivateProfileString 以支持系统 DSN。 有关详细信息,请参阅 ConfigDSN 函数

fRequest 配置模式
ODBC_ADD_DSN USERDSN_ONLY
ODBC_CONFIG_DSN USERDSN_ONLY
ODBC_REMOVE_DSN USERDSN_ONLY
ODBC_ADD_SYS_DSN SYSTEMDSN_ONLY
ODBC_CONFIG_SYS_DSN SYSTEMDSN_ONLY
ODBC_REMOVE_SYS_DSN SYSTEMDSN_ONLY
有关以下方面的信息 请参阅
添加、修改或删除数据源 设置 DLL) 中的 ConfigDSN (
从系统信息中删除数据源名称 SQLRemoveDSNFromIni
向系统信息添加数据源名称 SQLWriteDSNToIni