Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Соответствия
Представлена версия: ODBC 1.0
Сводка
ConfigDSN добавляет, изменяет или удаляет источники данных из системной информации. Он может запрашивать у пользователя сведения о подключении. Он может находиться в библиотеке DLL драйвера или отдельной библиотеке установки.
Синтаксис
BOOL ConfigDSN(
HWND hwndParent,
WORD fRequest,
LPCSTR lpszDriver,
LPCSTR lpszAttributes);
Аргументы
hwndParent
[Входные данные] Родительский дескриптор окна. Функция не будет отображать диалоговые окна, если дескриптор имеет значение NULL.
fRequest
[Входные данные] Тип запроса. Аргумент fRequest должен содержать одно из следующих значений:
ODBC_ADD_DSN. Добавление нового источника данных.
ODBC_CONFIG_DSN. Настройка (изменение) существующего источника данных.
ODBC_REMOVE_DSN. Удаление существующего источника данных.
lpszDriver
[Входные данные] Описание драйвера (обычно имя связанной СУБД), представленное пользователям вместо имени физического драйвера.
lpszAttributes
[Входные данные] Двукратный список атрибутов, завершаемых значением NULL, в виде пар "ключевое слово-значение". Дополнительные сведения см. в разделе "Комментарии".
Возвраты
Функция возвращает значение TRUE, если оно выполнено успешно, значение FALSE, если оно завершается ошибкой.
Диагностика
Когда ConfigDSN возвращает значение FALSE, связанное значение *pfErrorCode помещается в буфер ошибок установщика вызовом SQLPostInstallerError и может быть получено путем вызова SQLInstallerError. В следующей таблице перечислены значения *pfErrorCode , которые можно возвращать SQLInstallerError и объясняет каждый из них в контексте этой функции.
| *pfErrorCode | Error | Description |
|---|---|---|
| ODBC_ERROR_INVALID_HWND | Недопустимый дескриптор окна | Недопустимый аргумент hwndParent . |
| ODBC_ERROR_INVALID_KEYWORD_VALUE | Недопустимые пары "ключевое слово-значение" | Аргумент lpszAttributes содержит синтаксическую ошибку. |
| ODBC_ERROR_INVALID_NAME | Недопустимое имя драйвера или переводчика | Недопустимый аргумент lpszDriver . Его не удалось найти в реестре. |
| ODBC_ERROR_INVALID_REQUEST_TYPE | Недопустимый тип запроса | Аргумент fRequest не был одним из следующих: ODBC_ADD_DSN ODBC_CONFIG_DSN ODBC_REMOVE_DSN |
| ODBC_ERROR_REQUEST_FAILED | Сбой запроса | Не удалось выполнить операцию, запрошенную аргументом fRequest . |
| ODBC_ERROR_DRIVER_SPECIFIC | Ошибка драйвера или переводчика | Ошибка для конкретного драйвера, для которой не определена ошибка установщика ODBC. Аргумент SzError в вызове функции SQLPostInstallerError должен содержать сообщение об ошибке для конкретного драйвера. |
Комментарии
ConfigDSN получает сведения о подключении из библиотеки DLL установщика в виде списков атрибутов в виде пар "ключевое слово-значение". Каждая пара завершается с байтом NULL, и весь список завершается с байтом NULL. (То есть два байта null помечают конец списка.) Пробелы не допускаются вокруг равного знака в паре "ключевое слово-значение". ConfigDSN может принимать ключевые слова, которые являются недопустимыми ключевыми словами для SQLBrowseConnect и SQLDriverConnect. ConfigDSN не обязательно поддерживает все ключевые слова, которые являются допустимыми ключевыми словами для SQLBrowseConnect и SQLDriverConnect. (ConfigDSN не принимает ключевое слово DRIVER .) Ключевые слова, используемые функцией ConfigDSN , должны поддерживать все параметры, необходимые для повторного создания источника данных с помощью функции настройки AUTO установщика. Если используются значения ConfigDSN и значения строки подключения одинаковы, следует использовать те же ключевые слова.
Как и в SQLBrowseConnect и SQLDriverConnect, ключевые слова и их значения не должны содержать []{}(),?? *=!@ символы, а значение ключевого слова DSN не может состоять только из пустых. Из-за грамматики реестра ключевые слова и имена источников данных не могут содержать символ обратной косой черты (\).
ConfigDSN должен вызывать SQLValidDSN, чтобы проверить длину имени источника данных и убедиться, что недопустимые символы не включены в имя. Если имя источника данных больше SQL_MAX_DSN_LENGTH или содержит недопустимые символы, SQLValidDSN возвращает ошибку, а ConfigDSN возвращает ошибку. Длина имени источника данных также проверяется SQLWriteDSNToIni.
Например, чтобы настроить источник данных, требующий идентификатор пользователя, пароль и имя базы данных, приложение установки может передать следующие пары "ключевое слово-значение":
DSN=Personnel Data\0UID=Smith\0PWD=Sesame\0DATABASE=Personnel\0\0
Дополнительные сведения об этих ключевых словах см . в документации по SQLDriverConnect и каждому драйверу.
Чтобы отобразить диалоговое окно, hwndParent не должно иметь значение NULL.
Добавление источника данных
Если имя источника данных передается в ConfigDSN в lpszAttributes, ConfigDSN проверяет, является ли имя допустимым. Если имя источника данных соответствует существующему имени источника данных и hwndParent равно NULL, ConfigDSN перезаписывает существующее имя. Если оно соответствует существующему имени и hwndParent не равно null, ConfigDSN предложит пользователю перезаписать существующее имя.
Если lpszAttributes содержит достаточно сведений для подключения к источнику данных, ConfigDSN может добавить источник данных или отобразить диалоговое окно, с помощью которого пользователь может изменить сведения о подключении. Если lpszAttributes не содержит достаточно сведений для подключения к источнику данных, ConfigDSN должен определить необходимые сведения; если hwndParent не имеет значения NULL, он отображает диалоговое окно для получения сведений от пользователя.
Если ConfigDSN отображает диалоговое окно, оно должно отобразить все сведения о подключении, передаваемые ему в lpszAttributes. В частности, если имя источника данных было передано в него, ConfigDSN отображает это имя, но не позволяет пользователю изменять его. ConfigDSN может предоставлять значения по умолчанию для сведений о подключении, которые не передаются в него в lpszAttributes.
Если ConfigDSN не может получить полные сведения о подключении для источника данных, возвращает значение FALSE.
Если ConfigDSN может получить полные сведения о подключении к источнику данных, он вызывает SQLWriteDSNToIni в библиотеке DLL установщика, чтобы добавить новую спецификацию источника данных в файл Odbc.ini (или реестр). SQLWriteDSNToIni добавляет имя источника данных в раздел [Источники данных ODBC], создает раздел спецификации источника данных и добавляет ключевое слово DRIVER с описанием драйвера в качестве значения. ConfigDSN вызывает SQLWritePrivateProfileString в библиотеке DLL установщика, чтобы добавить любые дополнительные ключевые слова и значения, используемые драйвером.
Изменение источника данных
Чтобы изменить источник данных, необходимо передать имя источника данных в ConfigDSN в lpszAttributes. ConfigDSN проверяет, находится ли имя источника данных в файле Odbc.ini (или реестре).
Если hwndParent имеет значение NULL, ConfigDSN использует сведения в lpszAttributes для изменения сведений в файле Odbc.ini (или реестре). Если hwndParent не является null, ConfigDSN отображает диалоговое окно с помощью сведений в lpszAttributes; для информации, не в lpszAttributes, она использует сведения из системных сведений. Пользователь может изменить сведения, прежде чем ConfigDSN сохраняет его в системной информации.
Если имя источника данных было изменено, ConfigDSN сначала вызывает SQLRemoveDSNFromIni в библиотеке DLL установщика, чтобы удалить существующую спецификацию источника данных из файла Odbc.ini (или реестра). Затем он выполняет действия, описанные в предыдущем разделе, чтобы добавить новую спецификацию источника данных. Если имя источника данных не было изменено, ConfigDSN вызывает SQLWritePrivateProfileString в библиотеке DLL установщика, чтобы внести другие изменения. ConfigDSN может не удалять или изменять значение ключевого слова Driver .
Удаление источника данных
Чтобы удалить источник данных, необходимо передать имя источника данных в ConfigDSN в lpszAttributes. ConfigDSN проверяет, находится ли имя источника данных в файле Odbc.ini (или реестре). Затем он вызывает SQLRemoveDSNFromIni в библиотеке DLL установщика, чтобы удалить источник данных.
Заметка
При написании версии юникода этой подпрограммы необходимо вызвать ConfigDSNW с аргументами LPCWSTR вместо LPCSTR.
Связанные функции
| Сведения | Раздел |
|---|---|
| Добавление, изменение или удаление источника данных | SQLConfigDataSource |
| Получение значения из файла Odbc.ini или реестра | SQLGetPrivateProfileString |
| Удаление источника данных по умолчанию | SQLRemoveDefaultDataSource |
| Удаление имени источника данных из Odbc.ini (или реестра) | SQLRemoveDSNFromIni |
| Добавление имени источника данных в Odbc.ini (или реестр) | SQLWriteDSNToIni |
| Запись значения в файл Odbc.ini или реестр | SQLWritePrivateProfileString |