Anslutningsövergångar
ODBC-anslutningar har följande tillstånd.
Stat | Beskrivning |
---|---|
C0 | Oallokerad miljö, oallokerad anslutning |
C1 | Allokerad miljö, oallokerad anslutning |
C2 | Allokerad miljö, allokerad anslutning |
C3 | Anslutningsfunktionen behöver data |
C4 | Ansluten anslutning |
C5 | Ansluten anslutning, allokerad instruktion |
C6 | Ansluten anslutning, transaktionen pågår. Det är möjligt att en anslutning är i tillstånd C6 utan några allokerade instruktioner för anslutningen. Anta till exempel att anslutningen är i manuellt incheckningsläge och är i tillståndet C4. Om en instruktion allokeras, körs (startar en transaktion) och sedan frigörs, förblir transaktionen aktiv men det finns inga instruktioner för anslutningen. |
Följande tabeller visar hur varje ODBC-funktion påverkar anslutningstillståndet.
SQLAllocHandle
C0 Ingen env. |
C1 Ej allokerad | C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
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] Den här raden visar övergångar när HandleType SQL_HANDLE_ENV.
[2] Den här raden visar övergångar när HandleType SQL_HANDLE_DBC.
[3] Den här raden visar övergångar när HandleType SQL_HANDLE_STMT.
[4] Den här raden visar övergångar när HandleType SQL_HANDLE_DESC.
[5] Anropar SQLAllocHandle- med OutputHandlePtr som pekar på en giltig handtagsöverskrivning som hanterar utan hänsyn till det tidigare innehållet i handtaget och kan orsaka problem för ODBC-drivrutiner. Det är fel ODBC-programprogrammering att anropa SQLAllocHandle två gånger med samma programvariabel definierad för *OutputHandlePtr utan att anropa SQLFreeHandle för att frigöra handtaget innan det omplaceras. Att skriva över ODBC-handtag på ett sådant sätt kan leda till inkonsekvent beteende eller fel från ODBC-drivrutiner.
SQLBrowseConnect
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] Anslutningen var i manuellt incheckningsläge.
[2] Anslutningen var i automatiskt incheckningsläge.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges och SQLTables
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Anslutningen var i automatiskt incheckningsläge, eller så startade inte datakällan någon transaktion.
[2] Anslutningen var i manuellt incheckningsläge och datakällan startade en transaktion.
SQLConnect
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField och SQLSetDescRec
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] I det här tillståndet är de enda deskriptorerna som är tillgängliga för programmet uttryckligen allokerade deskriptorer.
SQLDataSources och SQLDrivers
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | C2 | C2 | C2 | 25000 |
SQLDriverConnect
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 s -- n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] eller ([5], [6], och [8]) C4[5] och [7] C5[5], [6], och [9] |
(IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Den här raden visar övergångar när HandleType SQL_HANDLE_ENV.
[2] Den här raden visar övergångar när HandleType SQL_HANDLE_DBC.
[3] Eftersom anslutningen inte är i ett anslutet tillstånd påverkas den inte av transaktionen.
[4] Incheckningen eller återställningen misslyckades på anslutningen. Funktionen returnerar SQL_ERROR i det här fallet.
[5] Incheckningen eller återställningen lyckades på anslutningen. Funktionen returnerar SQL_ERROR om incheckningen eller återställningen misslyckades på en annan anslutning, eller om funktionen returnerar SQL_SUCCESS om incheckningen eller återställningen lyckades på alla anslutningar.
[6] Minst en instruktion allokerades för anslutningen.
[7] Det fanns inga allokerade instruktioner för anslutningen.
[8] Anslutningen hade minst en instruktion som det fanns en öppen markör för, och datakällan bevarar markörer när transaktioner checkas in eller återställs, beroende på vilket som gäller (beroende på om CompletionType SQL_COMMIT eller SQL_ROLLBACK). Mer information finns i attributen SQL_CURSOR_COMMIT_BEHAVIOR och SQL_CURSOR_ROLLBACK_BEHAVIOR i SQLGetInfo.
[9] Om anslutningen hade några instruktioner för vilka det fanns öppna markörer bevarades inte markören när transaktionen checkades in eller återställdes.
SQLExecDirect och SQLExecute
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] Anslutningen var i automatiskt incheckningsläge och instruktionen som kördes var inte en markörspecifikation (till exempel en SELECT-instruktion); eller så var anslutningen i manuellt incheckningsläge och instruktionen som kördes startade inte en transaktion.
[2] Anslutningen var i automatiskt incheckningsläge och instruktionen som kördes var en markörspecifikation (till exempel en SELECT-instruktion).
[3] Anslutningen var i manuellt incheckningsläge och datakällan startade en transaktion.
SQLFreeHandle
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
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] och [8] C5[6] och [8] |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Den här raden visar övergångar när HandleType SQL_HANDLE_ENV.
[2] Den här raden visar övergångar när HandleType SQL_HANDLE_DBC.
[3] Den här raden visar övergångar när HandleType SQL_HANDLE_STMT.
[4] Den här raden visar övergångar när HandleType SQL_HANDLE_DESC.
[5] Det fanns bara en instruktion allokerad på anslutningen.
[6] Flera instruktioner allokerades för anslutningen.
[7] Anslutningen var i manuellt incheckningsläge.
[8] Anslutningen var i automatiskt incheckningsläge.
SQLFreeStmt
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
(IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Den här raden visar transaktioner när argumentet Alternativ är SQL_CLOSE.
[2] Den här raden visar transaktioner när argumentet Alternativ är SQL_UNBIND eller SQL_RESET_PARAMS.
[3] Anslutningen var i automatiskt incheckningsläge och inga markörer var öppna på några instruktioner förutom den här.
[4] Anslutningen var i manuellt incheckningsläge, eller så var den i automatiskt incheckningsläge och en markör var öppen på minst en annan instruktion.
SQLGetConnectAttr
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] Argumentet Attribute var SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE eller SQL_ATTR_TRACEFILE, eller ett värde hade angetts för anslutningsattributet.
[2] Argumentet Attribute var inte SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE eller SQL_ATTR_TRACEFILE, och ett värde hade inte angetts för anslutningsattributet.
SQLGetDiagField och SQLGetDiagRec
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH)[1] | -- | -- | -- | -- | -- | -- |
(IH)[2] | (IH) | -- | -- | -- | -- | -- |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Den här raden visar övergångar när HandleType SQL_HANDLE_ENV.
[2] Den här raden visar övergångar när HandleType SQL_HANDLE_DBC.
[3] Den här raden visar övergångar när HandleType SQL_HANDLE_STMT.
[4] Den här raden visar övergångar när HandleType SQL_HANDLE_DESC.
SQLGetEnvAttr
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | -- | -- |
SQLGetFunctions
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] Argumentet InfoType var SQL_ODBC_VER.
[2] Argumentet InfoType var inte SQL_ODBC_VER.
SQLMoreResults
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] Anslutningen var i automatiskt incheckningsläge och anropet till SQLMoreResults har inte initierat bearbetningen av en resultatuppsättning av en markörspecifikation.
[2] Anslutningen var i automatiskt incheckningsläge och anropet till SQLMoreResults har initierat bearbetningen av en resultatuppsättning av en markörspecifikation.
[3] Anslutningen var i manuellt incheckningsläge.
SQLNativeSql
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SQLPrepare
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Anslutningen var i automatiskt incheckningsläge, eller så startade inte datakällan någon transaktion.
[2] Anslutningen var i manuellt incheckningsläge och datakällan startade en transaktion.
SQLSetConnectAttr
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] och [6] C5[8] 08002[4] HY011[5] eller [7] |
[1] Argumentet Attribute var inte SQL_ATTR_TRANSLATE_LIB eller SQL_ATTR_TRANSLATE_OPTION.
[2] Argumentet Attribute var SQL_ATTR_TRANSLATE_LIB eller SQL_ATTR_TRANSLATE_OPTION.
[3] Argumentet Attribute var inte SQL_ATTR_ODBC_CURSORS eller SQL_ATTR_PACKET_SIZE.
[4] Argumentet Attribute var SQL_ATTR_ODBC_CURSORS.
[5] Argumentet Attribute var SQL_ATTR_PACKET_SIZE.
[6] Argumentet Attribute var inte SQL_ATTR_AUTOCOMMIT eller argumentet Attribute var SQL_ATTR_AUTOCOMMIT och det här attributet checkade inte in transaktionen.
[7] Argumentet Attribute var SQL_ATTR_TXN_ISOLATION.
[8] Argumentet Attribute var SQL_ATTR_AUTOCOMMIT och inställningen för det här attributet bekräftade transaktionen.
SQLSetEnvAttr
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | -- | -- | (HY010) | -- | -- | -- |
Alla andra ODBC-funktioner
C0 Ingen env. |
C1 Oallokerat |
C2 Tilldelade |
C3 Behöver data |
C4 Ansluten |
C5 Uttalande |
C6 Transaktion |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |