Přechody připojení
Připojení ODBC mají následující stavy.
Stát | Popis |
---|---|
C0 | Nepřidělené prostředí, nepřidělené připojení |
C1 | Přidělené prostředí, nepřidělené připojení |
C2 | Přidělené prostředí, přidělené připojení |
C3 | Funkce připojení potřebuje data. |
C4 | Připojené připojení |
C5 | Připojené připojení, přidělený příkaz |
C6 | Připojené připojení, probíhající transakce. Připojení může být ve stavu C6 bez příkazů přidělených pro připojení. Předpokládejme například, že připojení je v režimu ručního potvrzení a je ve stavu C4. Pokud je příkaz přidělen, proveden (spuštění transakce) a pak uvolněn, transakce zůstane aktivní, ale neexistují žádné příkazy v připojení. |
Následující tabulky ukazují, jak každá funkce ODBC ovlivňuje stav připojení.
SQLAllocHandle
C0 Žádný env. |
C1 Nepřidělené | C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
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] Tento řádek zobrazuje přechody, když handleType SQL_HANDLE_ENV.
[2] Tento řádek zobrazuje přechody, když byl handletype SQL_HANDLE_DBC.
[3] Tento řádek zobrazuje přechody, když handletype SQL_HANDLE_STMT.
[4] Tento řádek zobrazuje přechody, když byl SQL_HANDLE_DESC
[5] Volání SQLAllocHandle s OutputHandlePtr odkazující na platný popisovač přepisuje tento popisovač bez ohledu na předchozí obsah tohoto popisovače a může způsobit problémy s ovladači ODBC. Není správné programování aplikace ODBC volat SQLAllocHandle dvakrát se stejnou aplikační proměnnou definovanou pro *OutputHandlePtr bez volání SQLFreeHandle uvolnit popisovač před jeho přidělením. Přepsání popisovačů ODBC takovým způsobem může vést k nekonzistentnímu chování nebo chybám v části ovladačů ODBC.
SQLBrowseConnect
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] Připojení bylo v režimu ručního potvrzení.
[2] Připojení bylo v režimu automatického potvrzení.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges a SQLTable
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Připojení bylo v režimu automatického potvrzení nebo zdroj dat nezačal transakci.
[2] Připojení bylo v režimu ručního potvrzení a zdroj dat začal transakci.
SQLConnect
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField a SQLSetDescRec
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] V tomto stavu jsou pouze popisovače, které jsou pro aplikaci k dispozici, explicitně přidělovány popisovače.
SQLDataSources a SQLDrivers
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | C2 | C2 | C2 | 25000 |
SQLDriverConnect
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 s -- n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] nebo ([5], [6] a [8]) C4[5] a [7] C5[5], [6] a [9] |
(IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Tento řádek zobrazuje přechody, když handleType SQL_HANDLE_ENV.
[2] Tento řádek zobrazuje přechody, když byl handletype SQL_HANDLE_DBC.
[3] Vzhledem k tomu, že připojení není v připojeném stavu, není to ovlivněno transakcí.
[4] Potvrzení nebo vrácení zpět v připojení se nezdařilo. Funkce v tomto případě vrátí SQL_ERROR.
[5] Potvrzení nebo vrácení zpět bylo u připojení úspěšné. Funkce vrátí SQL_ERROR, pokud potvrzení nebo vrácení zpět selhalo v jiném připojení, nebo funkce vrátí SQL_SUCCESS, pokud potvrzení nebo vrácení zpět bylo úspěšné u všech připojení.
[6] Pro připojení bylo přiděleno alespoň jedno prohlášení.
[7] Pro připojení nebyly přiděleny žádné příkazy.
[8] Připojení mělo alespoň jeden příkaz, pro který byl otevřený kurzor, a zdroj dat zachovává kurzory při potvrzení nebo vrácení transakcí zpět, podle toho, zda CompletionType byl SQL_COMMIT nebo SQL_ROLLBACK). Další informace naleznete v SQL_CURSOR_COMMIT_BEHAVIOR a SQL_CURSOR_ROLLBACK_BEHAVIOR atributy v SQLGetInfo.
[9] Pokud připojení obsahovalo nějaké příkazy, pro které byly otevřené kurzory, kurzory nebyly zachovány při potvrzení transakce nebo vrácení zpět.
SQLExecDirect a SQLExecute
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] Připojení bylo v režimu automatického potvrzení a příkaz spuštěn nebyl kurzorspecifikace (například příkaz SELECT); nebo připojení bylo v režimu ručního potvrzení a příkaz spuštěn nespustí transakci.
[2] Připojení bylo v režimu automatického potvrzení a spouštěný příkaz byl kurzoremspecifikace (například příkaz SELECT).
[3] Připojení bylo v režimu ručního potvrzení a zdroj dat začal transakci.
SQLFreeHandle
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(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] a [8] C5[6] a [8] |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Tento řádek zobrazuje přechody, když handleType SQL_HANDLE_ENV.
[2] Tento řádek zobrazuje přechody, když byl handletype SQL_HANDLE_DBC.
[3] Tento řádek zobrazuje přechody, když handletype SQL_HANDLE_STMT.
[4] Tento řádek zobrazuje přechody, když byl SQL_HANDLE_DESC
[5] Pro připojení byl přidělen pouze jeden příkaz.
[6] Pro připojení bylo přiděleno více příkazů.
[7] Připojení bylo v režimu ručního potvrzení.
[8] Připojení bylo v režimu automatického potvrzení.
SQLFreeStmt
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
(IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Tento řádek zobrazuje transakce, pokud je argument
[2] Tento řádek zobrazuje transakce, pokud je argument
[3] Připojení bylo v režimu automatického potvrzení a žádné kurzory nebyly otevřeny u žádných příkazů s výjimkou tohoto.
[4] Připojení bylo v režimu ručního potvrzení nebo bylo v režimu automatického potvrzení a kurzor byl otevřen alespoň na jednom jiném příkazu.
SQLGetConnectAttr
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] Argument atributu byl SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE nebo SQL_ATTR_TRACEFILE nebo byla pro atribut připojení nastavena hodnota.
[2] Argument atributu
SQLGetDiagField a SQLGetDiagRec
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH)[1] | -- | -- | -- | -- | -- | -- |
(IH)[2] | (IH) | -- | -- | -- | -- | -- |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Tento řádek zobrazuje přechody, když handleType SQL_HANDLE_ENV.
[2] Tento řádek zobrazuje přechody, když byl handletype SQL_HANDLE_DBC.
[3] Tento řádek zobrazuje přechody, když handletype SQL_HANDLE_STMT.
[4] Tento řádek zobrazuje přechody, když byl SQL_HANDLE_DESC
SQLGetEnvAttr
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | -- | -- |
FUNKCE SQLGetFunctions
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] Argument
[2] Argument InfoType nebyl SQL_ODBC_VER.
SQLMoreResults
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] Připojení bylo v režimu automatického potvrzení a volání SQLMoreResults neicializovalo zpracování sady výsledků specifikace kurzoru.
[2] Připojení bylo v režimu automatického potvrzení a volání SQLMoreResults inicializovalo zpracování sady výsledků specifikace kurzoru.
[3] Připojení bylo v režimu ručního potvrzení.
SQLNativeSql
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SqlPrepare
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] Připojení bylo v režimu automatického potvrzení nebo zdroj dat nezačal transakci.
[2] Připojení bylo v režimu ručního potvrzení a zdroj dat začal transakci.
SQLSetConnectAttr
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] a [6] C5[8] 08002[4] HY011[5] nebo [7] |
[1] Argument atributu
[2] Argument atributu
[3] Argument atributu
[4] Argument atributu
[5] Argument atributu
[6] Argument atributu
[7] Argument atributu
[8] Argument atributu
SQLSetEnvAttr
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | -- | -- | (HY010) | -- | -- | -- |
Všechny ostatní funkce ODBC
C0 Žádný env. |
C1 Neobsazený |
C2 Přidělený |
C3 Potřebujete data |
C4 Připojený |
C5 Výrok |
C6 Transakce |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |