Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Соответствие
Представлена версия: соответствие стандартам ODBC 2.0: ODBC
Сводка
SQLDrivers перечисляет описания водителей и ключевые слова атрибутов водителей. Эта функция реализуется только менеджером драйверов.
Syntax
SQLRETURN SQLDrivers(
SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction,
SQLCHAR * DriverDescription,
SQLSMALLINT BufferLength1,
SQLSMALLINT * DescriptionLengthPtr,
SQLCHAR * DriverAttributes,
SQLSMALLINT BufferLength2,
SQLSMALLINT * AttributesLengthPtr);
Arguments
EnvironmentHandle
[Ввод] Управление окружением.
Направление
[Ввод] Определяет, получает ли менеджер драйверов следующее описание драйвера в списке (SQL_FETCH_NEXT) или поиск начинается с начала списка (SQL_FETCH_FIRST).
DriverDescription
[Выход] Указатель на буфер для возврата описания драйвера.
Если DriverDescription равно NULL, DescriptionLengthPtr всё равно вернёт общее количество символов (за исключением символа null-termination для данных о символах), доступных для возврата в буфере, на который указывает DriverDescription.
BufferLength1
[Ввод] Длина буфера *DriverDescription , в символах.
ОписаниеДлинаPtr
[Выход] Указатель на буфер, в котором можно вернуть общее количество символов (исключая символ нулевой терминации), доступных для возврата в *DriverDescription. Если количество доступных для возврата символов больше или равно BufferLength1, описание драйвера в *DriverDescription усечено до BufferLength1 минус длина символа нулевой терминации.
DriverAttributes
[Выход] Указатель на буфер для возврата списка пар значений атрибутов драйвера (см. «Комментарии»).
Если DriverAttributes равен NULL, AttributesLengthPtr всё равно вернёт общее количество байтов (за исключением символа null-termination для данных символов), доступных для возврата в буфере, на который указывает DriverAttributes.
BufferLength2
[Ввод] Длина буфера *DriverAttributes , в символах. Если значение *DriverDescription — это строка Unicode (при вызове SQLDriversW), то аргумент BufferLength должен быть чётным числом.
AttributesLengthPtr
[Выход] Указатель на буфер для возврата общего количества байтов (исключая байт нулевой терминации), доступных для возврата в *DriverAttributes. Если количество доступных для возврата байтов больше или равно BufferLength2, список пар значений атрибутов в *DriverAttributes усекается до BufferLength2 минус длина символа нулевого завершения.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR или SQL_INVALID_HANDLE.
Diagnostics
Когда SQLDrivers возвращает либо SQL_ERROR, либо SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE можно получить, вызвав SQLGetDiagRec с помощью HandleType SQL_HANDLE_ENV и HandleTypeEnvironmentHandle. В следующей таблице перечислены значения SQLSTATE, обычно возвращаемые SQLDrivers , и каждое из них объясняется в контексте этой функции; обозначение «(DM)» предшествует описаниям SQLSTATE, возвращаемым менеджером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Общее предупреждение | (DM) Информационное сообщение для менеджера водителей. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 01004 | Строковые данные, усеченные справа | (DM) Буфер *DriverDescription был недостаточно велик, чтобы вернуть полное описание драйвера. Поэтому описание было сокращено. Длина полного описания драйвера возвращается в *DescriptionLengthPtr. (Функция возвращает SQL_SUCCESS_WITH_INFO.) (DM) Буфер *DriverAttributes был недостаточно велик, чтобы вернуть полный список пар значений атрибутов. Поэтому список был сокращён. Длина неусечённого списка пар значений атрибутов возвращается в *AttributesLengthPtr. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| HY000 | Общая ошибка | Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину. |
| HY001 | Ошибка выделения памяти | (DM) Менеджер драйверов не смог выделить память, необходимую для выполнения или завершения функции. |
| HY010 | Ошибка последовательности функций | (DM) SQLExecute, SQLExecDirect или SQLMoreResults был вызван для ОператораHandle и возвращен SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров. |
| HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
| HY090 | Недопустимая длина строки или буфера | (DM) Значение, указанное для аргумента BufferLength1 , было меньше 0. (DM) Значение, указанное для аргумента BufferLength2 , было меньше 0 или равно 1. |
| HY103 | Некорректный код поиска | (DM) Значение, указанное для аргумента Направление , не равно SQL_FETCH_FIRST или SQL_FETCH_NEXT. |
| HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function. |
Comments
SQLDrivers возвращает описание драйвера в буфере *DriverDescription . Он возвращает дополнительную информацию о драйвере в буфере *DriverAttributes в виде списка пар ключевых слов и значений. Все ключевые слова, указанные в системной информации для драйверов, будут возвращены для всех драйверов, за исключением CreateDSN, который используется для запроса на создание источников данных и, следовательно, является необязательным. Каждая пара заканчивается нулевым байтом, а полный список заканчивается нулевым байтом (то есть два нулевых байта отмечают конец списка). Например, файловый драйвер с синтаксисом C может вернуть следующий список атрибутов («\0» обозначает нулевый символ):
FileUsage=1\0FileExtns=*.dbf\0\0
Если *DriverAttributes недостаточно велик для хранения всего списка, список усекается, SQLDrivers возвращает SQLSTATE 01004 (данные усечёны), а длина списка (за исключением последнего байта нулевой окончания) возвращается в *AttributesLengthPtr.
Ключевые слова атрибутов драйвера добавляются из системной информации при установке драйвера. Для получения дополнительной информации см. раздел «Установка компонентов ODBC».
Приложение может несколько раз вызывать SQLDrivers для получения всех описаний драйверов. Менеджер драйверов получает эту информацию из системных данных. Когда больше нет описаний водителей, SQLDrivers возвращается SQL_NO_DATA. Если SQLDrivers вызывается с SQL_FETCH_NEXT сразу после возврата SQL_NO_DATA, он возвращает первое описание драйвера. Для получения информации о том, как приложение использует информацию, возвращаемую SQLDrivers, см. раздел «Выбор источника данных или драйвера».
Если SQL_FETCH_NEXT передаётся SQLDrivers при первом вызове, SQLDrivers возвращает первое имя источника данных.
Поскольку SQLDrivers реализован в Driver Manager, он поддерживается для всех драйверов независимо от соответствия стандартам конкретного драйвера.
Связанные функции
| Сведения о | Смотри |
|---|---|
| Обнаружение и перечисление значений, необходимых для подключения к источнику данных | Функция SQLBrowseConnect |
| Подключение к источнику данных | Функция SQLConnect |
| Возврат имен источников данных | Функция SQLDataSources |
| Подключение к источнику данных с помощью строка подключения или диалогового окна | функция SQLDriverConnect |