Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
соответствие
Представлена версия: соответствие стандартам ODBC 1.0: ISO 92
Сводка
SQLDisconnect закрывает соединение, связанное с определенным дескриптором подключения.
Синтаксис
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Аргументы
ConnectionHandle
[Входные данные] Дескриптор подключения.
Возвращает
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE или SQL_STILL_EXECUTING.
Диагностика
Если SQLDisconnect возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE можно получить путем вызова SQLGetDiagRec с HandleType SQL_HANDLE_DBC и HandleConnectionHandle. В следующей таблице перечислены значения SQLSTATE, которые обычно возвращаются SQLDisconnect и объясняются каждый из них в контексте этой функции; Нотация "(DM)" предшествует описаниям SQLSTATEs, возвращаемым диспетчером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
| SQLSTATE | Ошибка | Описание |
|---|---|---|
| 01000 | Общее предупреждение | Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 01002 | Ошибка отключения | Произошла ошибка во время отключения. Однако отключение выполнено успешно. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 08003 | Подключение не открыто | (DM) Подключение, указанное в аргументе ConnectionHandle, не было открыто. |
| 25000 | Недопустимое состояние транзакции | Транзакция была в процессе подключения, указанного аргументом ConnectionHandle. Транзакция остается активной. |
| HY000 | Общая ошибка | Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText описывает ошибку и ее причину. |
| HY001 | Ошибка выделения памяти | Драйверу не удалось выделить память, необходимую для поддержки выполнения или завершения функции. |
| HY008 | Операция отменена | Асинхронная обработка была включена для ConnectionHandle. Функция была вызвана и до завершения выполнения функции SQLCancelHandle была вызвана ConnectionHandle. Затем функция была вызвана снова на ConnectionHandle. Функция была вызвана и до завершения выполнения SQLCancelHandle была вызвана ConnectionHandle из другого потока в многопотоковом приложении. |
| HY010 | Ошибка последовательности функций | (DM) Асинхронно выполняющаяся функция была вызвана для StatementHandle, связанной с ConnectionHandle и по-прежнему выполнялась при вызове SQLDisconnect. (DM) асинхронно выполняющаяся функция (не эта) была вызвана для ConnectionHandle и по-прежнему выполнялась при вызове этой функции. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationsили SQLSetPos вызывается для StatementHandle, связанной с ConnectionHandle и возвращенной SQL_NEED_DATA. Эта функция была вызвана до отправки данных для всех параметров выполнения или столбцов. |
| HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
| HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в функции SQLEndTran. |
| HYT01 | Истек срок действия времени ожидания подключения | Срок ожидания подключения истек до того, как источник данных ответил на запрос, и подключение по-прежнему активно. Период времени ожидания подключения задается через SQLSetConnectAttrSQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Драйвер не поддерживает эту функцию | (DM) Драйвер, связанный с ConnectionHandle, не поддерживает функцию. |
| IM017 | Опрос отключен в асинхронном режиме уведомлений | При использовании модели уведомлений опрос отключается. |
| IM018 | SQLCompleteAsync не был вызван для выполнения предыдущей асинхронной операции в этом дескрипторе. | Если предыдущий вызов функции дескриптора возвращает SQL_STILL_EXECUTING и если включен режим уведомлений, SQLCompleteAsync необходимо вызвать на дескриптор, чтобы выполнить после обработки и завершить операцию. |
Комментарии
Если приложение вызывает SQLDisconnect после SQLBrowseConnect возвращает SQL_NEED_DATA и перед возвратом другого возвращаемого кода драйвер отменяет процесс просмотра подключений и возвращает подключение к несоединённому состоянию.
Если приложение вызывает SQLDisconnect при наличии неполной транзакции, связанной с дескриптором подключения, драйвер возвращает SQLSTATE 25000 (недопустимое состояние транзакции), указывая, что транзакция не изменяется и подключение открыто. Неполная транзакция — это транзакция, которая не была зафиксирована или откатена с помощью SQLEndTran.
Если приложение вызывает SQLDisconnect до освобождения всех инструкций, связанных с подключением, драйвер после успешного отключения от источника данных освобождает эти инструкции и все дескрипторы, которые были явно выделены для подключения. Однако если одна или несколько инструкций, связанных с подключением, по-прежнему выполняются асинхронно, SQLDisconnect возвращает SQL_ERROR со значением HY010 (ошибка последовательности функций). Кроме того, SQLDisconnect освобождает все связанные инструкции и все дескрипторы, которые были явно выделены для подключения, если подключение находится в приостановленном состоянии или если SQLDisconnect успешно отменены SQLCancelHandle.
Сведения о том, как приложение использует SQLDisconnect, см. в отключении от источника данных или драйвера.
Отключение от подключения в пуле
Если пул подключений включен для общей среды и вызовы приложений SQLDisconnect в этой среде, подключение возвращается к пулу подключений и по-прежнему доступно другим компонентам с использованием той же общей среды.
Пример кода
См. пример программы ODBC, функции SQLBrowseConnectи функции SQLConnect.
Связанные функции
| Сведения о | Видеть |
|---|---|
| Выделение дескриптора | функции SQLAllocHandle |
| Подключение к источнику данных | функции SQLConnect |
| Подключение к источнику данных с помощью строки подключения или диалогового окна | функция SQLDriverConnect |
| Выполнение операции фиксации или отката | функция SQLEndTran |
| Освобождение дескриптора подключения | функция SQLFreeConnect |
См. также
Справочник по API ODBC
файлы заголовков ODBC