Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Соответствия
Представлена версия: соответствие стандартам ODBC 3.0: ISO 92
Сводка
SQLGetConnectAttr возвращает текущий параметр атрибута подключения.
Заметка
Дополнительные сведения о том, что диспетчер драйверов сопоставляет эту функцию с тем, когда приложение ODBC 3*.x* работает с драйвером ODBC 2*.x*, см. в разделе "Функции сопоставления замены для обратной совместимости приложений".
Синтаксис
SQLRETURN SQLGetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Аргументы
ConnectionHandle
[Input] Дескриптор подключения
Атрибут
[Входные данные] Атрибут для получения.
ValuePtr
[Выходные данные] Указатель на память, в которой возвращается текущее значение атрибута, указанного атрибутом. Для атрибутов целочисленного типа некоторые драйверы могут записывать только более низкий 32-разрядный или 16-разрядный буфер и оставлять бит более высокого порядка неизменным. Поэтому приложения должны использовать буфер SQLULEN и инициализировать значение до 0 перед вызовом этой функции.
Если Значение ValuePtr равно NULL, StringLengthPtr по-прежнему возвращает общее количество байтов (за исключением символа завершения null для символьных данных), доступное для возврата в буфер, на который указывает ValuePtr.
BufferLength
[Входные данные] Если атрибут является атрибутом ODBC, а ValuePtr указывает на символьную строку или двоичный буфер, этот аргумент должен быть длиной *ValuePtr. Если атрибут является атрибутом ODBC, а *ValuePtr является целым числом, bufferLength игнорируется. Если значение в *ValuePtr является строкой Юникода (при вызове SQLGetConnectAttrW), аргумент BufferLength должен быть четным.
Если атрибут является атрибутом, определенным драйвером, приложение указывает характер атрибута диспетчеру драйверов, задав аргумент BufferLength . BufferLength может иметь следующие значения:
Если *ValuePtr является указателем на символьную строку, BufferLength — это длина строки.
Если *ValuePtr является указателем на двоичный буфер, приложение помещает результат макроса SQL_LEN_BINARY_ATTR(длина) в BufferLength. Это помещает отрицательное значение в BufferLength.
Если значение *ValuePtr является указателем на значение, отличное от символьной строки или двоичной строки, BufferLength должно иметь значение SQL_IS_POINTER.
Если параметр *ValuePtr содержит тип данных фиксированной длины, БуферLength либо SQL_IS_INTEGER, либо SQL_IS_UINTEGER, как это необходимо.
StringLengthPtr
[Выходные данные] Указатель на буфер, в котором возвращается общее количество байтов (за исключением символа завершения null), доступное для возврата в *ValuePtr. Если значение атрибута представляет собой символьную строку, а число байтов, доступных для возврата, больше, чем BufferLength, минус длина символа завершения null, данные в *ValuePtr усечены до BufferLength минус длина символа завершения null и завершается драйвером null.
Возвраты
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR или SQL_INVALID_HANDLE.
Диагностика
Когда SQLGetConnectAttr возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE можно получить из структуры диагностических данных путем вызова SQLGetDiagRec с помощью HandleType SQL_HANDLE_DBC и дескриптора ConnectionHandle. В следующей таблице перечислены значения SQLSTATE, которые обычно возвращаются SQLGetConnectAttr и объясняются каждый из них в контексте этой функции. Нотация "(DM)" предшествует описаниям SQLSTATEs, возвращаемых диспетчером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Общее предупреждение | Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 01004 | Строковые данные, усеченные справа | Данные, возвращаемые в *ValuePtr , были усечены для буфераLength минус длина символа завершения null. Длина ненадежного строкового значения возвращается в *StringLengthPtr. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 08003 | Подключение не открыто | (DM) Значение атрибута , требующее открытого подключения. |
| 08S01 | Сбой связи | Связь между драйвером и источником данных, к которому был подключен драйвер, произошел сбой до завершения обработки функции. |
| HY000 | Общая ошибка | Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое из структуры диагностических данных аргументом MessageText в SQLGetDiagField , описывает ошибку и ее причину. |
| HY001 | Ошибка выделения памяти | Драйверу не удалось выделить память, необходимую для поддержки выполнения или завершения функции. |
| HY010 | Ошибка последовательности функций | (DM) SQLBrowseConnect был вызван для ConnectionHandle и возвращен SQL_NEED_DATA. Эта функция была вызвана до того, как SQLBrowseConnect вернул SQL_SUCCESS_WITH_INFO или SQL_SUCCESS. (DM) SQLExecute, SQLExecDirect или SQLMoreResults был вызван для ConnectionHandle и возвращен SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров. |
| HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
| HY090 | Недопустимая длина строки или буфера | (DM) *ValuePtr — это символьная строка, и BufferLength было меньше нуля, но не равно SQL_NTS. |
| HY092 | Недопустимый идентификатор атрибута или параметра | Значение, указанное для атрибута аргумента, недопустимо для версии ODBC, поддерживаемой драйвером. |
| HY114 | Драйвер не поддерживает асинхронное выполнение асинхронной функции на уровне подключения | (DM) Приложение попыталось включить асинхронное выполнение функции с SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE для драйвера, который не поддерживает асинхронные операции подключения. |
| HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function. |
| HYC00 | Необязательный компонент не реализован | Значение, указанное для атрибута аргумента, является допустимым атрибутом подключения ODBC для версии ODBC, поддерживаемой драйвером, но не поддерживается драйвером. |
| HYT01 | Время ожидания для подключения истекло | Срок ожидания подключения истек до того, как источник данных ответил на запрос. Период времени ожидания подключения задается через SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Драйвер не поддерживает эту функцию | (DM) Драйвер, соответствующий ConnectionHandle , не поддерживает функцию. |
Комментарии
Общие сведения об атрибутах подключения см. в разделе "Атрибуты подключения".
Список атрибутов, которые можно задать, см. в разделе SQLSetConnectAttr. Обратите внимание, что если атрибут указывает атрибут, возвращающий строку, ValuePtr должен быть указателем на буфер строки. Максимальная длина возвращаемой строки, включая символ завершения null, будет байтов BufferLength .
В зависимости от атрибута приложению не нужно устанавливать подключение перед вызовом SQLGetConnectAttr. Однако если вызывается SQLGetConnectAttr , а указанный атрибут не имеет значения по умолчанию и не был задан предыдущим вызовом SQLSetConnectAttr, SQLGetConnectAttr вернет SQL_NO_DATA.
Если атрибут SQL_ATTR_ TRACE или SQL_ATTR_ TRACEFILE, connectionHandle не должен быть допустимым, а SQLGetConnectAttr не вернет SQL_ERROR или SQL_INVALID_HANDLE, если ConnectionHandle недопустим. Эти атрибуты применяются ко всем подключениям. SQLGetConnectAttr возвращает SQL_ERROR или SQL_INVALID_HANDLE, если другой аргумент недопустим.
Хотя приложение может задать атрибуты инструкции с помощью SQLSetConnectAttr, приложение не может использовать SQLGetConnectAttr для получения значений атрибутов инструкции; он должен вызвать SQLGetStmtAttr, чтобы получить параметр атрибутов инструкции.
Атрибуты подключения SQL_ATTR_AUTO_IPD и SQL_ATTR_CONNECTION_DEAD могут быть возвращены вызовом SQLGetConnectAttr, но не могут быть заданы вызовом SQLSetConnectAttr.
Заметка
Нет асинхронной поддержки SQLGetConnectAttr. При реализации SQLGetConnectAttr драйвер может повысить производительность, свести к минимуму количество отправленных или запрашиваемых сведений с сервера.
Связанные функции
| Сведения | Раздел |
|---|---|
| Возврат параметра атрибута инструкции | Функция SQLGetStmtAttr |
| Настройка атрибута подключения | Функция SQLSetConnectAttr |
| Настройка атрибута среды | Функция SQLSetEnvAttr |
| Задание атрибута инструкции | Функция SQLSetStmtAttr |