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) | -- | -- |