Поделиться через


Функция ConfigDSN

Соответствия
Представлена версия: 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