Transizioni di connessione
Le connessioni ODBC hanno gli stati seguenti.
Stato | Descrizione |
---|---|
C0 | Ambiente non allocato, connessione non allocata |
C1 | Ambiente allocato, connessione non allocata |
S2 | Ambiente allocato, connessione allocata |
C3 | La funzione di connessione richiede dati |
C4 | Connessione connessa |
C5 | Connessione connessa, istruzione allocata |
C6 | Connessione connessa, transazione in corso. È possibile che una connessione sia nello stato C6 senza istruzioni allocate nella connessione. Si supponga, ad esempio, che la connessione sia in modalità di commit manuale e sia nello stato C4. Se un'istruzione viene allocata, eseguita (avvio di una transazione) e quindi liberata, la transazione rimane attiva, ma non sono presenti istruzioni sulla connessione. |
Nelle tabelle seguenti viene illustrato come ogni funzione ODBC influisce sullo stato della connessione.
SQLAllocHandle
C0 NessunA Env. |
C1 Non allocato | S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
C1[1] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
(IH)[2] | S2 | --[5] | --[5] | --[5] | --[5] | --[5] |
(IH)[3] | (IH) | (08003) | (08003) | C5 | --[5] | --[5] |
(IH)[4] | (IH) | (08003) | (08003) | --[5] | --[5] | --[5] |
[1] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_ENV.
[2] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DBC.
[3] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_STMT.
[4] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DESC.
[5] La chiamata di SQLAllocHandle con OutputHandlePtr punta a un handle valido sovrascrive tale handle senza considerare il contenuto precedente dell'handle e potrebbe causare problemi per i driver ODBC. La programmazione dell'applicazione ODBC non è corretta per chiamare SQLAllocHandle due volte con la stessa variabile dell'applicazione definita per *OutputHandlePtr senza chiamare SQLFreeHandle per liberare l'handle prima di riallocare l'handle. La sovrascrittura degli handle ODBC in questo modo può causare comportamenti incoerenti o errori nella parte dei driver ODBC.
SQLBrowseConnect
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] La connessione era in modalità di commit manuale.
[2] La connessione era in modalità commit automatico.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges e SQLTables
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] La connessione era in modalità di commit automatico o l'origine dati non ha avviato una transazione.
[2] La connessione era in modalità di commit manuale e l'origine dati ha iniziato una transazione.
SQLConnect
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField e SQLSetDescRec
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] In questo stato, gli unici descrittori disponibili per l'applicazione sono descrittori allocati in modo esplicito.
SQLDataSources e SQLDrivers
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | S2 | S2 | S2 | 25000 |
SQLDriverConnect
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 s -- n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] o ([5], [6], e [8]) C4[5] e [7] C5[5], [6], e [9] |
(IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_ENV.
[2] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DBC.
[3] Poiché la connessione non è in uno stato connesso, non è influenzata dalla transazione.
[4] Il commit o il rollback non è riuscito nella connessione. La funzione restituisce SQL_ERROR in questo caso.
[5] Il commit o il rollback è riuscito nella connessione. La funzione restituisce SQL_ERROR se il commit o il rollback non è riuscito in un'altra connessione oppure la funzione restituisce SQL_SUCCESS se il commit o il rollback è riuscito in tutte le connessioni.
[6] Nella connessione è stata allocata almeno un'istruzione.
[7] Non sono state allocate istruzioni sulla connessione.
[8] La connessione aveva almeno un'istruzione per la quale era presente un cursore aperto e l'origine dati mantiene i cursori quando viene eseguito il commit o il rollback delle transazioni, a seconda del fatto che CompletionType fosse SQL_COMMIT o SQL_ROLLBACK. Per altre informazioni, vedere gli attributi SQL_CURSOR_COMMIT_BEHAVIOR e SQL_CURSOR_ROLLBACK_BEHAVIOR in SQLGetInfo.
[9] Se la connessione aveva istruzioni per le quali erano presenti cursori aperti, i cursori non venivano mantenuti quando è stato eseguito il commit o il rollback della transazione.
SQLExecDirect e SQLExecute
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] La connessione era in modalità commit automatico e l'istruzione eseguita non era una specifica del cursore (ad esempio un'istruzione SELECT) oppure la connessione era in modalità di commit manuale e l'istruzione eseguita non ha avviato una transazione.
[2] La connessione era in modalità commit automatico e l'istruzione eseguita era una specifica del cursore( ad esempio un'istruzione SELECT).
[3] La connessione era in modalità di commit manuale e l'origine dati ha iniziato una transazione.
SQLFreeHandle
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(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] e [8] C5[6] e [8] |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_ENV.
[2] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DBC.
[3] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_STMT.
[4] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DESC.
[5] Nella connessione è stata allocata una sola istruzione.
[6] Nella connessione sono state allocate più istruzioni.
[7] La connessione era in modalità di commit manuale.
[8] La connessione era in modalità di commit automatico.
SQLFreeStmt
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
(IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Questa riga mostra le transazioni quando l'argomento Option è SQL_CLOSE.
[2] Questa riga mostra le transazioni quando l'argomento Option è SQL_UNBIND o SQL_RESET_PARAMS.
[3] La connessione era in modalità di commit automatico e nessun cursore era aperto in alcuna istruzione, ad eccezione di questa.
[4] La connessione era in modalità di commit manuale oppure era in modalità commit automatico e un cursore era aperto su almeno un'altra istruzione.
SQLGetConnectAttr
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] L'argomento Attribute è stato SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE o SQL_ATTR_TRACEFILE oppure è stato impostato un valore per l'attributo di connessione.
[2] L'argomento Attribute non è stato SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE o SQL_ATTR_TRACEFILE e un valore non è stato impostato per l'attributo di connessione.
SQLGetDiagField e SQLGetDiagRec
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH)[1] | -- | -- | -- | -- | -- | -- |
(IH)[2] | (IH) | -- | -- | -- | -- | -- |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_ENV.
[2] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DBC.
[3] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_STMT.
[4] Questa riga mostra le transizioni quando HandleType è stato SQL_HANDLE_DESC.
SQLGetEnvAttr
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | -- | -- |
SQLGetFunctions
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] L'argomento InfoType è stato SQL_ODBC_VER.
[2] L'argomento InfoType non è stato SQL_ODBC_VER.
SQLMoreResults
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] La connessione era in modalità commit automatico e la chiamata a SQLMoreResults non ha inizializzato l'elaborazione di un set di risultati di una specifica del cursore.
[2] La connessione era in modalità commit automatico e la chiamata a SQLMoreResults ha inizializzato l'elaborazione di un set di risultati di una specifica del cursore.
[3] La connessione era in modalità di commit manuale.
SQLNativeSql
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SQLPrepare
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] La connessione era in modalità di commit automatico o l'origine dati non ha avviato una transazione.
[2] La connessione era in modalità di commit manuale e l'origine dati ha iniziato una transazione.
SQLSetConnectAttr
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] e [6] C5[8] 08002[4] HY011[5] o [7] |
[1] L'argomento Attribute non è stato SQL_ATTR_TRANSLATE_LIB o SQL_ATTR_TRANSLATE_OPTION.
[2] L'argomento Attribute è stato SQL_ATTR_TRANSLATE_LIB o SQL_ATTR_TRANSLATE_OPTION.
[3] L'argomento Attribute non è stato SQL_ATTR_ODBC_CURSORS o SQL_ATTR_PACKET_SIZE.
[4] L'argomento Attribute è stato SQL_ATTR_ODBC_CURSORS.
[5] L'argomento Attribute è stato SQL_ATTR_PACKET_SIZE.
[6] L'argomento Attribute non è stato SQL_ATTR_AUTOCOMMIT oppure l'argomento Attribute è stato SQL_ATTR_AUTOCOMMIT e l'impostazione di questo attributo non ha eseguito il commit della transazione.
[7] L'argomento Attribute è stato SQL_ATTR_TXN_ISOLATION.
[8] L'argomento Attribute è stato SQL_ATTR_AUTOCOMMIT e l'impostazione di questo attributo ha eseguito il commit della transazione.
SQLSetEnvAttr
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | -- | -- | (HY010) | -- | -- | -- |
Tutte le altre funzioni ODBC
C0 NessunA Env. |
C1 Non allocato |
S2 Allocato |
C3 Dati necessari |
C4 Connesso |
C5 Istruzione |
C6 Transazione |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |