Teilen über


Verbindungsübergänge

ODBC-Verbindungen weisen die folgenden Zustände auf.

State BESCHREIBUNG
C0 Nicht zugeordnete Umgebung, nicht zugeordnete Verbindung
C1 Zugeordnete Umgebung, nicht zugeordnete Verbindung
C2 Zugeordnete Umgebung, zugeordnete Verbindung
C3 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, ohne dass der Verbindung Anweisungen zugeordnet sind. Angenommen, die Verbindung befindet sich im manuellen Commitmodus und befindet sich im Zustand C4. Wenn eine Anweisung zugeordnet, ausgeführt (eine Transaktion gestartet) und dann freigegeben wird, bleibt die Transaktion aktiv, aber es gibt keine Anweisungen für die Verbindung.

Die folgenden Tabellen zeigen, wie sich jede ODBC-Funktion auf den Verbindungsstatus auswirkt.

SQLAllocHandle

C0

Keine Env.
C1 Nicht zugeordnet C2

Zugeordnet
C3

Daten erforderlich
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, wenn 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, als HandleType SQL_HANDLE_STMT wurde.

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

[5] Der Aufruf von SQLAllocHandle mit OutputHandlePtr , der auf ein gültiges Handle verweist, überschreibt, das ohne Berücksichtigung des vorherigen Inhalts dieses Handles behandelt wird, und kann Probleme für ODBC-Treiber verursachen. Es ist falsch, sqlAllocHandle zweimal mit derselben Anwendungsvariable aufzurufen, die für *OutputHandlePtr definiert ist, ohne SQLFreeHandle aufzurufen, um das Handle freizugeben, bevor es neu zugeordnet wird. Das Überschreiben von ODBC-Handles auf diese Weise kann zu inkonsistentem Verhalten oder Fehlern aufseiten von ODBC-Treibern führen.

SQLBrowseConnect

C0

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
C4

Verbunden
C5

-Anweisung.
C6

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

SQLCloseCursor

C0

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
C4

Verbunden
C5

-Anweisung.
C6

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

[1] Die Verbindung befand sich im manuellen Commitmodus.

[2] Die Verbindung befand sich im Automatischen Commitmodus.

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

C0

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
C4

Verbunden
C5

-Anweisung.
C6

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

[1] Die Verbindung befand sich im Automatischen Commitmodus, oder die Datenquelle hat keine Transaktion gestartet.

[2] Die Verbindung befand sich im manuellen Commitmodus, und die Datenquelle hat eine Transaktion gestartet.

SQLConnect

C0

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
C4

Verbunden
C5

-Anweisung.
C6

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

SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField und SQLSetDescRec

C0

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
C4

Verbunden
C5

-Anweisung.
C6

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

[1] In diesem Zustand sind die einzigen Deskriptoren, die für die Anwendung verfügbar sind, explizit zugeordnete Deskriptoren.

SQLDataSources und SQLDrivers

C0

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
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, als 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 beim Commit oder Rollback bei einer anderen Verbindung ein Fehler aufgetreten ist oder die Funktion SQL_SUCCESS zurückgibt, wenn der Commit oder rollback für alle Verbindungen erfolgreich war.

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

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

[8] Die Verbindung verfügte über mindestens eine Anweisung, für die ein geöffneter Cursor vorhanden war, und die Datenquelle behält Cursor bei, wenn Transaktionen committet oder zurückgesetzt werden, je nachdem, ob CompletionType SQL_COMMIT oder SQL_ROLLBACK war). 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 es offene Cursor gab, wurden die Cursor nicht beibehalten, wenn die Transaktion committet oder ein Rollback ausgeführt 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 Autocommit-Modus, und die ausgeführte Anweisung war keine Cursorspezifikation (z. B. eine SELECT-Anweisung). oder die Verbindung befand sich im manuellen Commitmodus, und die ausgeführte Anweisung hat keine Transaktion gestartet.

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

[3] Die Verbindung befand sich im manuellen Commitmodus, und die Datenquelle hat eine Transaktion gestartet.

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, als HandleType SQL_HANDLE_DBC wurde.

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

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

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

[6] Für die Verbindung wurden mehrere Anweisungen zugeordnet.

[7] Die Verbindung befand sich im manuellen Commitmodus.

[8] Die Verbindung befand sich im Autocommit-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 Autocommit-Modus, und mit Ausnahme dieser Anweisung waren keine Cursor geöffnet.

[4] Die Verbindung befand sich im manuellen Commitmodus oder im Autocommit-Modus, und ein Cursor war für mindestens eine andere 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 wurde 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, als HandleType SQL_HANDLE_DBC wurde.

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

[4] Diese Zeile zeigt Übergänge an, als 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 Autocommit-Modus, und der Aufruf von SQLMoreResults hat die Verarbeitung eines Resultsets einer Cursorspezifikation nicht initialisiert.

[2] Die Verbindung befand sich im Autocommit-Modus, und der Aufruf von SQLMoreResults hat die Verarbeitung eines Resultsets einer Cursorspezifikation initialisiert.

[3] Die Verbindung befand sich 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 befand sich im Autocommit-Modus, oder die Datenquelle hat keine Transaktion gestartet.

[2] Die Verbindung befand sich im manuellen Commitmodus, und die Datenquelle hat eine Transaktion gestartet.

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 keinen Commit für die Transaktion ausgeführt.

[7] Das Attributargument wurde SQL_ATTR_TXN_ISOLATION.

[8] Das Attributargument wurde SQL_ATTR_AUTOCOMMIT, und durch Festlegen dieses Attributs wurde ein Commit für die Transaktion durchgeführt.

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

Keine Env.
C1

Nicht zugeordnet
C2

Zugeordnet
C3

Daten erforderlich
C4

Verbunden
C5

-Anweisung.
C6

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