Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Подключения ODBC имеют следующие состояния.
| State | Description |
|---|---|
| C0 | Нераспределенная среда, нераспределированное подключение |
| C1 | Выделенная среда, нераспределированное подключение |
| C2 | Выделенная среда, выделенное подключение |
| C3 | Для функции подключения требуются данные |
| C4 | Подключено подключение |
| C5 | Подключено подключение, выделенная инструкция |
| C6 | Подключено подключение, транзакция выполняется. Подключение может находиться в состоянии C6 без инструкций, выделенных для подключения. Например, предположим, что подключение находится в режиме фиксации вручную и находится в состоянии C4. Если инструкция выделена, выполнена (запуск транзакции), а затем освобождена, транзакция остается активной, но в соединении нет инструкций. |
В следующих таблицах показано, как каждая функция ODBC влияет на состояние подключения.
SQLAllocHandle
| C0 Нет Env. |
C1 Unallocated | C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| C1[1] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
| (IH)[2] | C2 | --[5] | --[5] | --[5] | --[5] | --[5] |
| (IH)[3] | (IH) | (08003) | (08003) | C5 | --[5] | --[5] |
| (IH)[4] | (IH) | (08003) | (08003) | --[5] | --[5] | --[5] |
[1] Эта строка показывает переходы при SQL_HANDLE_ENV HandleType .
[2] Эта строка показывает переходы при SQL_HANDLE_DBC HandleType .
[3] Эта строка показывает переходы при SQL_HANDLE_STMT HandleType .
[4] Эта строка показывает переходы при SQL_HANDLE_DESC HandleType .
[5] Вызов SQLAllocHandle с OutputHandlePtr, указывающих на допустимые перезаписи дескриптора, которые обрабатываются без учета предыдущего содержимого этого дескриптора, и могут вызвать проблемы с драйверами ODBC. Неправильное программирование приложения ODBC для вызова SQLAllocHandle дважды с той же переменной приложения, определенной для *OutputHandlePtr без вызова SQLFreeHandle, чтобы освободить дескриптор перед перераспредещением. Перезапись дескрипторов ODBC таким образом может привести к несогласованному поведению или ошибкам со стороны драйверов ODBC.
SQLBrowseConnect
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] Подключение было в режиме ручной фиксации.
[2] Подключение было в режиме автоматической фиксации.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedureColumns, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges и SQLTable
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Подключение было в режиме автоматической фиксации, или источник данных не начал транзакцию.
[2] Подключение было в режиме ручной фиксации, и источник данных начал транзакцию.
SQLConnect
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField и SQLSetDescRec
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] В этом состоянии только дескрипторы, доступные приложению, явно выделяются дескрипторами.
SQLDataSources и SQLDrivers
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (08003) | C2 | C2 | C2 | 25 000 |
SQLDriverConnect
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | C4 s -- n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] или ([5], [6], и [8]) C4[5] и [7] C5[5], [6], и [9] |
| (IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Эта строка показывает переходы при SQL_HANDLE_ENV HandleType .
[2] Эта строка показывает переходы при SQL_HANDLE_DBC HandleType .
[3] Так как подключение не находится в подключенном состоянии, оно не влияет на транзакцию.
[4] Сбой фиксации или отката подключения. Функция возвращает SQL_ERROR в этом случае.
[5] Фиксация или откат выполнена успешно в соединении. Функция возвращает SQL_ERROR, если фиксация или откат не выполнена в другом соединении, или функция возвращает SQL_SUCCESS, если фиксация или откат выполнена успешно во всех подключениях.
[6] Существовал по крайней мере один оператор, выделенный для подключения.
[7] В соединении не было выделено никаких инструкций.
[8] Подключение имело по крайней мере одну инструкцию, для которой был открытый курсор, и источник данных сохраняет курсоры при фиксации или откате транзакций, в зависимости от того, SQL_COMMIT или SQL_ROLLBACK. Дополнительные сведения см. в атрибутах SQL_CURSOR_COMMIT_BEHAVIOR и SQL_CURSOR_ROLLBACK_BEHAVIOR в SQLGetInfo.
[9] Если подключение имело какие-либо операторы, для которых были открытые курсоры, курсоры не сохранялись при фиксации или откате транзакции.
SQLExecDirect и SQLExecute
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] Подключение было в режиме автоматической фиксации, и выполненная инструкция не была спецификацией курсора(например, инструкцией SELECT); или соединение было в режиме ручной фиксации, и инструкция, выполненная не была транзакцией.
[2] Подключение было в режиме автоматической фиксации, и инструкция, выполненная, была спецификацией курсора(например, инструкцией SELECT).
[3] Подключение было в режиме ручной фиксации, и источник данных начал транзакцию.
SQLFreeHandle
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH)[1] | C0 | (HY010) | (HY010) | (HY010) | (HY010) | (HY010) |
| (IH)[2] | (IH) | (C1) | (HY010) | (HY010) | (HY010) | (HY010) |
| (IH)[3] | (IH) | (IH) | (IH) | (IH) | C4[5] --[6] | --[7] C4[5] и [8] C5[6] и [8] |
| (IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Эта строка показывает переходы при SQL_HANDLE_ENV HandleType .
[2] Эта строка показывает переходы при SQL_HANDLE_DBC HandleType .
[3] Эта строка показывает переходы при SQL_HANDLE_STMT HandleType .
[4] Эта строка показывает переходы при SQL_HANDLE_DESC HandleType .
[5] Существовал только один оператор, выделенный для подключения.
[6] В соединении было выделено несколько операторов.
[7] Подключение было в режиме ручной фиксации.
[8] Подключение было в режиме автоматической фиксации.
Функция SQLFreeStmt
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
| (IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Эта строка показывает транзакции, когда аргумент Option SQL_CLOSE.
[2] Эта строка показывает транзакции, когда аргумент Option SQL_UNBIND или SQL_RESET_PARAMS.
[3] Подключение было в режиме автоматической фиксации, и курсоры не были открыты для любых инструкций, кроме этого.
[4] Подключение было в режиме ручной фиксации или было в режиме автоматической фиксации, и курсор был открыт по крайней мере на одну другую инструкцию.
SQLGetConnectAttr
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] Аргумент атрибута был SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE или SQL_ATTR_TRACEFILE или был задан для атрибута подключения.
[2] Аргумент атрибута не был SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE или SQL_ATTR_TRACEFILE, а для атрибута подключения не задано значение.
SQLGetDiagField и SQLGetDiagRec
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH)[1] | -- | -- | -- | -- | -- | -- |
| (IH)[2] | (IH) | -- | -- | -- | -- | -- |
| (IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
| (IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Эта строка показывает переходы при SQL_HANDLE_ENV HandleType .
[2] Эта строка показывает переходы при SQL_HANDLE_DBC HandleType .
[3] Эта строка показывает переходы при SQL_HANDLE_STMT HandleType .
[4] Эта строка показывает переходы при SQL_HANDLE_DESC HandleType .
SQLGetEnvAttr
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| IH | -- | -- | -- | -- | -- | -- |
SQLGetFunctions
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] Аргумент InfoType был SQL_ODBC_VER.
[2] Аргумент InfoType не был SQL_ODBC_VER.
SQLMoreResults
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] Подключение было в режиме автоматической фиксации, и вызов SQLMoreResults не инициализировал обработку результирующий набор спецификации курсора.
[2] Подключение было в режиме автоматической фиксации, и вызов SQLMoreResults инициализировал обработку результирующий набор спецификации курсора.
[3] Подключение было в режиме ручной фиксации.
SQLNativeSql
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SQLPrepare
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Подключение было в режиме автоматической фиксации, или источник данных не начал транзакцию.
[2] Подключение было в режиме ручной фиксации, и источник данных начал транзакцию.
SQLSetConnectAttr
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] и [6] C5[8] 08002[4] HY011[5] или [7] |
[1] Аргумент атрибута не был SQL_ATTR_TRANSLATE_LIB или SQL_ATTR_TRANSLATE_OPTION.
[2] Аргумент атрибута был SQL_ATTR_TRANSLATE_LIB или SQL_ATTR_TRANSLATE_OPTION.
[3] Аргумент атрибута не был SQL_ATTR_ODBC_CURSORS или SQL_ATTR_PACKET_SIZE.
[4] Аргумент атрибута был SQL_ATTR_ODBC_CURSORS.
[5] Аргумент атрибута был SQL_ATTR_PACKET_SIZE.
[6] Аргумент атрибута не был SQL_ATTR_AUTOCOMMIT, или аргумент атрибута был SQL_ATTR_AUTOCOMMIT, и установка этого атрибута не зафиксировала транзакцию.
[7] Аргумент атрибута был SQL_ATTR_TXN_ISOLATION.
[8] Аргумент атрибута был SQL_ATTR_AUTOCOMMIT и задал этот атрибут фиксации транзакции.
SQLSetEnvAttr
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | -- | -- | (HY010) | -- | -- | -- |
Все остальные функции ODBC
| C0 Нет Env. |
C1 Не выделено |
C2 Распределено |
C3 Требуются данные |
C4 Connected |
C5 Оператор |
C6 Транзакция |
|---|---|---|---|---|---|---|
| (IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |