SQLConfigDataSource 関数

準拠
導入されたバージョン: ODBC 1.0

まとめ
SQLConfigDataSource は 、データ ソースを追加、変更、または削除します。

SQLConfigDataSource の機能には、ODBCCONF.EXEを使用してアクセスすることもできます。

構文

  
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 の呼び出しで他のすべてのパラメーターが NULL になります。NULL でない場合、それらは無視されます。

lpszDriver
[入力]物理ドライバー名ではなく、ユーザーに提示されるドライバーの説明 (通常は関連付けられている DBMS の名前)。

lpszAttributes
[入力]キーワードと値のペアの形式の属性の 2 倍の 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 メモリ不足 メモリ不足のため、インストーラーで関数を実行できませんでした。

説明

SQLConfigDataSourcelpszDriver の値を使用して、ドライバーのセットアップ DLL の完全なパスをシステム情報から読み取ります。 DLL を読み込み、渡されたのと同じ引数を使用して ConfigDSN を呼び出します。

セットアップ DLL が見つからないか読み込めない場合、またはユーザーがダイアログ ボックスをキャンセルした場合、SQLConfigDataSource は FALSE を返します。 それ以外の場合は、 ConfigDSN から受信した状態が返されます。

SQLConfigDataSource は、システム DSN fRequestsをユーザー DSN fRequestsにマップします (ODBC_ADD_DSNにODBC_ADD_SYS_DSN、ODBC_CONFIG_DSNにODBC_CONFIG_SYS_DSN、ODBC_REMOVE_DSNにODBC_REMOVE_SYS_DSN)。 ユーザーとシステム DSN を区別するために、 SQLConfigDataSource は次の表に従ってインストーラー構成モードを設定します。 を返す前に、 SQLConfigDataSource は 構成モードを BOTHDSN にリセットします。 ConfigDSN (ドライバーによって実装) では、システム DSN をサポートするために SQLWriteDSNToIniSQLWritePrivateProfileString を呼び出す必要があります。 詳細については、「 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
対象 解決方法については、
データ ソースの追加、変更、または削除 ConfigDSN (セットアップ DLL 内)
システム情報からのデータ ソース名の削除 SQLRemoveDSNFromIni
データ ソース名をシステム情報に追加する SQLWriteDSNToIni