共用方式為


連線轉換

ODBC 連接具有下列狀態。

State 描述
C0 未配置的環境、未配置的連接
C1 已配置的環境、未配置的連接
C2 已配置的環境、已配置的連線
C3 連線函式需要資料
C4 連線連線
C5 連線連線,已配置的語句
C6 已連線的連線、進行中的交易。 連接可能處於狀態 C6,且連接上未配置任何語句。 例如,假設連線處於手動認可模式,且處於狀態 C4。 如果已配置語句、執行 (啟動交易),然後釋放,交易會維持使用中狀態,但連接上沒有語句。

下表顯示每個 ODBC 函式如何影響連接狀態。

SQLAllocHandle

C0

沒有 Env。
C1 未配置 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] 當 HandleType SQL_HANDLE_ENV時 ,此資料列會顯示轉換。

[2] 當 HandleType 已SQL_HANDLE_DBC時 ,此資料列會顯示轉換。

[3] 當 HandleType SQL_HANDLE_STMT時 ,此資料列會顯示轉換。

[4] 當 HandleType SQL_HANDLE_DESC時 ,此資料列會顯示轉換。

[5] 使用 OutputHandlePtr 呼叫 SQLAllocHandle ,指出有效的控制碼會覆寫該控制碼,而不考慮該控制碼先前的內容,而且可能會導致 ODBC 驅動程式發生問題。 ODBC 應用程式程式設計不正確,使用針對 *OutputHandlePtr 定義的 相同應用程式變數來呼叫 SQLAllocHandle 兩次,而不需呼叫 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、SQLProcedures、SQLSpecialColumns、SQLStatistics、SQLTablePrivileges 和 SQLTables

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 25000

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] 當 HandleType SQL_HANDLE_ENV時 ,此資料列會顯示轉換。

[2] 當 HandleType 已SQL_HANDLE_DBC時 ,此資料列會顯示轉換。

[3] 因為連線不是處於線上狀態,所以不會受到交易影響。

[4] 連線上的認可或復原失敗。 在此情況下,函式會傳回SQL_ERROR。

[5] 連線上的認可或復原成功。 如果認可或復原在另一個連線上失敗,或函式傳回SQL_SUCCESS認可或回復成功,則函式會傳回SQL_ERROR。

[6] 連接上至少有一個語句已配置。

[7] 沒有在連接上配置的語句。

[8] 連接至少有一個語句有開啟的資料指標,而且資料來源會在認可或回復交易時保留資料指標,無論套用哪一個(視 CompletionType SQL_COMMIT還是SQL_ROLLBACK而定)。 如需詳細資訊,請參閱 SQLGetInfo 中的 SQL_CURSOR_COMMIT_BEHAVIOR和SQL_CURSOR_ROLLBACK_BEHAVIOR屬性。

[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] 當 HandleType SQL_HANDLE_ENV時 ,此資料列會顯示轉換。

[2] 當 HandleType 已SQL_HANDLE_DBC時 ,此資料列會顯示轉換。

[3] 當 HandleType SQL_HANDLE_STMT時 ,此資料列會顯示轉換。

[4] 當 HandleType SQL_HANDLE_DESC時 ,此資料列會顯示轉換。

[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] Attribute 引數SQL_ATTR_ACCESS_MODE、SQL_ATTR_AUTOCOMMIT、SQL_ATTR_LOGIN_TIMEOUT、SQL_ATTR_ODBC_CURSORS、SQL_ATTR_TRACE或SQL_ATTR_TRACEFILE,或已設定連接屬性的值。

[2] Attribute 引數未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] 當 HandleType SQL_HANDLE_ENV時 ,此資料列會顯示轉換。

[2] 當 HandleType 已SQL_HANDLE_DBC時 ,此資料列會顯示轉換。

[3] 當 HandleType SQL_HANDLE_STMT時 ,此資料列會顯示轉換。

[4] 當 HandleType SQL_HANDLE_DESC時 ,此資料列會顯示轉換。

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] and [6] C5[8] 08002[4] HY011[5] 或 [7]

[1] Attribute 引數未SQL_ATTR_TRANSLATE_LIB或SQL_ATTR_TRANSLATE_OPTION。

[2] Attribute 引數已SQL_ATTR_TRANSLATE_LIB或SQL_ATTR_TRANSLATE_OPTION。

[3] Attribute 引數未SQL_ATTR_ODBC_CURSORS或SQL_ATTR_PACKET_SIZE。

[4] Attribute 引數已SQL_ATTR_ODBC_CURSORS。

[5] Attribute 引數已SQL_ATTR_PACKET_SIZE。

[6] Attribute 引數未SQL_ATTR_AUTOCOMMIT,或 Attribute 引數SQL_ATTR_AUTOCOMMIT且設定此屬性未認可交易。

[7] Attribute 引數已SQL_ATTR_TXN_ISOLATION。

[8] Attribute 引數已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) -- --