Freigeben über


Verbindungsübergänge

ODBC-Verbindungen weisen die folgenden Zustände auf.

State Beschreibung
C0 Nicht zugewiesene Umgebung, nicht zugewiesene Verbindung
C1 Zugeordnete Umgebung, nicht zugeordnete Verbindung
C2 Zugeordnete Umgebung, zugeordnete Verbindung
C3 Die Verbindungsfunktion benötigt Daten.
C4 Verbundene Verbindung
C5 Verbundene Verbindung, zugeordnete Anweisung
C6 Verbundene Verbindung, Transaktion wird ausgeführt. Es ist möglich, dass sich eine Verbindung im Zustand C6 befindet und keine Anweisungen für die Verbindung zugeordnet sind. Angenommen, die Verbindung befindet sich im manuellen Commitmodus und befindet sich im Zustand C4. Wenn eine Anweisung zugewiesen, ausgeführt (eine Transaktion gestartet) und dann freigegeben wird, bleibt die Transaktion aktiv, aber es gibt keine Anweisungen für die Verbindung.

In den folgenden Tabellen wird gezeigt, wie sich jede ODBC-Funktion auf den Verbindungsstatus auswirkt.

SQLAllocHandle

C0

Kein Env.
C1 Nicht zugewiesen C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
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] Diese Zeile zeigt Übergänge an, als HandleType SQL_HANDLE_ENV wurde.

[2] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DBC wurde.

[3] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_STMT wurde.

[4] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DESC wurde.

[5] Aufrufen von SQLAllocHandle mit OutputHandlePtr , das auf ein gültiges Handle zeigt, überschreibt, das ohne Rücksicht auf den vorherigen Inhalt ofthat Handle behandelt wird, und kann Probleme für ODBC-Treiber verursachen. Es ist falsch, die ODBC-Anwendungsprogrammierung, um SQLAllocHandle zweimal mit derselben Anwendungsvariable aufzurufen, die für *OutputHandlePtr definiert ist, ohne SQLFreeHandle aufzurufen, um den Handle freizugeben, bevor es neu zugeordnet wird. Das Überschreiben von ODBC-Handles kann zu inkonsistenten Verhaltensweisen oder Fehlern im Rahmen von ODBC-Treibern führen.

SQLBrowseConnect

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) C3 [d] C4 [s] -- [d] C2 [e] C4 [s] (08002) (08002) (08002)

SQLCloseCursor

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) (IH) -- --[1] C5[2]

[1] Die Verbindung war im manuellen Commitmodus.

[2] Die Verbindung war im Automatischen Commit-Modus.

SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges und SQLTables

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) (IH) --[1] C6[2] --

[1] Die Verbindung wurde im Modus für den automatischen Commit ausgeführt, oder die Datenquelle hat keine Transaktion gestartet.

[2] Die Verbindung war im manuellen Commitmodus, und die Datenquelle begann eine Transaktion.

SQLConnect

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) C4 (08002) (08002) (08002) (08002)

SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField und SQLSetDescRec

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) --[1] -- --

[1] In diesem Zustand werden die einzigen für die Anwendung verfügbaren Deskriptoren explizit zugewiesen.

SQLDataSources und SQLDrivers

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) -- -- -- -- -- --

SQLDisconnect

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (08003) C2 C2 C2 25000

SQLDriverConnect

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) C4 s -- n[f] (08002) (08002) (08002) (08002)

SQLEndTran

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) [1] --[3] --[3] --[3] -- -- --[4] oder ([5], [6] und [8]) C4[5] und [7] C5[5], [6] und [9]
(IH) [2] (IH) (08003) (08003) -- -- C5

[1] Diese Zeile zeigt Übergänge an, als HandleType SQL_HANDLE_ENV wurde.

[2] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DBC wurde.

[3] Da sich die Verbindung nicht in einem verbundenen Zustand befindet, ist sie von der Transaktion nicht betroffen.

[4] Fehler beim Commit oder Rollback für die Verbindung. Die Funktion gibt in diesem Fall SQL_ERROR zurück.

[5] Der Commit oder Rollback war für die Verbindung erfolgreich. Die Funktion gibt SQL_ERROR zurück, wenn der Commit oder Rollback bei einer anderen Verbindung fehlgeschlagen ist, oder die Funktion gibt SQL_SUCCESS zurück, wenn der Commit oder Rollback für alle Verbindungen erfolgreich war.

[6] Für die Verbindung wurde mindestens eine Anweisung zugewiesen.

[7] Es wurden keine Anweisungen für die Verbindung zugeordnet.

[8] Die Verbindung hatte mindestens eine Anweisung, für die ein geöffneter Cursor vorhanden war, und die Datenquelle behält Cursor bei, wenn Transaktionen zugesichert oder zurückgesetzt werden, je nachdem, ob CompletionType SQL_COMMIT oder SQL_ROLLBACK wurde). Weitere Informationen finden Sie unter den Attributen SQL_CURSOR_COMMIT_BEHAVIOR und SQL_CURSOR_ROLLBACK_BEHAVIOR in SQLGetInfo.

[9] Wenn die Verbindung Anweisungen hatte, für die geöffnete Cursor vorhanden waren, wurden die Cursor nicht beibehalten, wenn die Transaktion zugesichert oder zurückgesetzt wurde.

SQLExecDirect und SQLExecute

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) (IH) --[1] C6[2] C6[3] --

[1] Die Verbindung befand sich im Modus für den automatischen Commit, und die ausgeführte Anweisung war keine Cursorspezifikation (z. B. eine SELECT-Anweisung), oder die Verbindung befand sich im Modus für manuelles Commit, und die ausgeführte Anweisung hat keine Transaktion gestartet.

[2] Die Verbindung befand sich im Modus für den automatischen Commit, und die ausgeführte Anweisung war eine Cursorspezifikation (z. B. eine SELECT-Anweisung).

[3] Die Verbindung war im manuellen Commitmodus, und die Datenquelle begann eine Transaktion.

SQLFreeHandle

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(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] und [8] C5[6] und [8]
(IH) [4] (IH) (IH) (IH) -- -- --

[1] Diese Zeile zeigt Übergänge an, als HandleType SQL_HANDLE_ENV wurde.

[2] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DBC wurde.

[3] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_STMT wurde.

[4] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DESC wurde.

[5] Für die Verbindung wurde nur eine Anweisung zugewiesen.

[6] Es wurden mehrere Anweisungen für die Verbindung zugewiesen.

[7] Die Verbindung war im manuellen Commitmodus.

[8] Die Verbindung war im Automatischen Commit-Modus.

'SQLFreeStmt'

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) [1] (IH) (IH) (IH) (IH) -- C5[3] --[4]
(IH) [2] (IH) (IH) (IH) (IH) -- --

[1] Diese Zeile zeigt Transaktionen an, wenn das Argument Option SQL_CLOSE ist.

[2] Diese Zeile zeigt Transaktionen an, wenn das Argument Option SQL_UNBIND oder SQL_RESET_PARAMS ist.

[3] Die Verbindung befand sich im Modus für den automatischen Commit, und es wurden keine Cursor für alle Anweisungen außer diesem geöffnet.

[4] Die Verbindung war im manuellen Commit-Modus oder im Auto-Commit-Modus, und ein Cursor wurde auf mindestens einer anderen Anweisung geöffnet.

SQLGetConnectAttr

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
IH IH --[1] 08003[2] HY010 -- -- --

[1] Das Attributargument wurde SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE oder SQL_ATTR_TRACEFILE oder ein Wert für das Verbindungsattribute festgelegt.

[2] Das Attributargument war nicht SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE oder SQL_ATTR_TRACEFILE, und für das Verbindungsattribute wurde kein Wert festgelegt.

SQLGetDiagField und SQLGetDiagRec

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) [1] -- -- -- -- -- --
(IH) [2] (IH) -- -- -- -- --
(IH) [3] (IH) (IH) (IH) (IH) -- --
(IH) [4] (IH) (IH) (IH) -- -- --

[1] Diese Zeile zeigt Übergänge an, als HandleType SQL_HANDLE_ENV wurde.

[2] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DBC wurde.

[3] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_STMT wurde.

[4] Diese Zeile zeigt Übergänge an, wenn HandleType SQL_HANDLE_DESC wurde.

SQLGetEnvAttr

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
IH -- -- -- -- -- --

SQLGetFunctions

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
IH IH HY010 HY010 -- -- --

SQLGetInfo

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
IH IH --[1] 08003[2] 08003 -- -- --

[1] Das InfoType-Argument wurde SQL_ODBC_VER.

[2] Das InfoType-Argument wurde nicht SQL_ODBC_VER.

SQLMoreResults

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) (IH) --[1] C6[2] --[3] C5[1]

[1] Die Verbindung befand sich im Modus für den automatischen Commit, und der Aufruf von SQLMoreResults hat die Verarbeitung eines Resultsets einer Cursorspezifikation nicht initialisiert.

[2] Die Verbindung befand sich im Modus für den automatischen Commit, und der Aufruf von SQLMoreResults hat die Verarbeitung eines Resultsets einer Cursorspezifikation initialisiert.

[3] Die Verbindung war im manuellen Commitmodus.

SQLNativeSql

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (08003) (08003) -- -- --

SQLPrepare

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) (IH) --[1] C6[2] --

[1] Die Verbindung wurde im Modus für den automatischen Commit ausgeführt, oder die Datenquelle hat keine Transaktion gestartet.

[2] Die Verbindung war im manuellen Commitmodus, und die Datenquelle begann eine Transaktion.

SQLSetConnectAttr

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
IH IH --[1] 08003[2] HY010 --[3] 08002[4] HY011[5] --[3] 08002[4] HY011[5] --[3] und [6] C5[8] 08002[4] HY011[5] oder [7]

[1] Das Attributargument wurde nicht SQL_ATTR_TRANSLATE_LIB oder SQL_ATTR_TRANSLATE_OPTION.

[2] Das Attributargument wurde SQL_ATTR_TRANSLATE_LIB oder SQL_ATTR_TRANSLATE_OPTION.

[3] Das Attributargument wurde nicht SQL_ATTR_ODBC_CURSORS oder SQL_ATTR_PACKET_SIZE.

[4] Das Attributargument wurde SQL_ATTR_ODBC_CURSORS.

[5] Das Attributargument wurde SQL_ATTR_PACKET_SIZE.

[6] Das Attributargument wurde nicht SQL_ATTR_AUTOCOMMIT, oder das Attributargument wurde SQL_ATTR_AUTOCOMMIT und das Festlegen dieses Attributs hat keine Commit für die Transaktion ausgeführt.

[7] Das Attributargument wurde SQL_ATTR_TXN_ISOLATION.

[8] Das Attributargument wurde SQL_ATTR_AUTOCOMMIT, und das Festlegen dieses Attributs hat die Transaktion zugesichert.

SQLSetEnvAttr

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) -- -- (HY010) -- -- --

Alle anderen ODBC-Funktionen

C0

Kein Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten benötigen
C4

Verbunden
C5

Anweisung
C6

Transaktion
(IH) (IH) (IH) (IH) (IH) -- --