Transitions de connexion
Les connexions ODBC ont les états suivants.
State | Description |
---|---|
C0 | Environnement non alloué, connexion non allouée |
C1 | Environnement alloué, connexion non allouée |
C2 | Environnement alloué, connexion allouée |
C3 | La fonction de connexion a besoin de données |
C4 | Connexion connectée |
C5 | Connexion connectée, instruction allouée |
C6 | Connexion connectée, transaction en cours. Il est possible qu’une connexion soit dans l’état C6 sans instructions allouées sur la connexion. Par exemple, supposons que la connexion est en mode de validation manuelle et qu’elle est dans l’état C4. Si une instruction est allouée, exécutée (démarrage d’une transaction), puis libérée, la transaction reste active, mais il n’y a pas d’instructions sur la connexion. |
Les tableaux suivants montrent comment chaque fonction ODBC affecte l’état de connexion.
SQLAllocHandle
C0
Pas d’env. |
C1 non alloué | C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
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] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_ENV.
[2] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DBC.
[3] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_STMT.
[4] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DESC.
[5] Appel de SQLAllocHandle avec OutputHandlePtr pointant vers un handle valide remplace ce handle sans tenir compte du contenu précédent du handle, et peut entraîner des problèmes pour les pilotes ODBC. Il est incorrect de programmer une application ODBC pour appeler SQLAllocHandle deux fois avec la même variable d’application définie pour *OutputHandlePtr sans appeler SQLFreeHandle pour libérer le handle avant de la réallouer. Le remplacement des handles ODBC d’une telle manière peut entraîner des erreurs ou comportements incohérents dans la partie des pilotes ODBC.
SQLBrowseConnect
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | C3 [d] C4 [s] | -- [d] C2 [e] C4 [s] | (08002) | (08002) | (08002) |
SQLCloseCursor
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | --[1] C5[2] |
[1] La connexion était en mode de validation manuelle.
[2] La connexion était en mode de validation automatique.
SQLColumnPrivileges, SQLColumns, SQLForeignKeys, SQLGetTypeInfo, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges et SQLTables
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] La connexion était en mode de validation automatique, ou la source de données n’a pas commencé une transaction.
[2] La connexion était en mode de validation manuelle et la source de données a commencé une transaction.
SQLConnect
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 | (08002) | (08002) | (08002) | (08002) |
SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField et SQLSetDescRec
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | --[1] | -- | -- |
[1] Dans cet état, les seuls descripteurs disponibles pour l’application sont des descripteurs alloués explicitement.
SQLDataSources et SQLDrivers
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | -- | -- | -- | -- | -- | -- |
SQLDisconnect
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | C2 | C2 | C2 | 25000 |
SQLDriverConnect
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | C4 s -- n[f] | (08002) | (08002) | (08002) | (08002) |
SQLEndTran
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH)[1] | --[3] | --[3] | --[3] | -- | -- | --[4] ou ([5], [6], et [8]) C4[5] et [7] C5[5], [6] et [9] |
(IH)[2] | (IH) | (08003) | (08003) | -- | -- | C5 |
[1] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_ENV.
[2] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DBC.
[3] Étant donné que la connexion n’est pas dans un état connecté, elle n’est pas affectée par la transaction.
[4] Échec de la validation ou de la restauration sur la connexion. La fonction retourne SQL_ERROR dans ce cas.
[5] Validation ou restauration réussie sur la connexion. La fonction retourne SQL_ERROR si la validation ou la restauration a échoué sur une autre connexion, ou si la fonction retourne SQL_SUCCESS si la validation ou la restauration a réussi sur toutes les connexions.
[6] Au moins une instruction a été allouée sur la connexion.
[7] Aucune instruction n’a été allouée sur la connexion.
[8] La connexion avait au moins une instruction pour laquelle il y avait un curseur ouvert, et la source de données conserve les curseurs lorsque les transactions sont validées ou restaurées, selon que CompletionType était SQL_COMMIT ou SQL_ROLLBACK). Pour plus d’informations, consultez les attributs SQL_CURSOR_COMMIT_BEHAVIOR et SQL_CURSOR_ROLLBACK_BEHAVIOR dans SQLGetInfo.
[9] Si la connexion avait des instructions pour lesquelles il y avait des curseurs ouverts, les curseurs n’ont pas été conservés lorsque la transaction a été validée ou restaurée.
SQLExecDirect et SQLExecute
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] C6[3] | -- |
[1] La connexion était en mode de validation automatique et l’instruction exécutée n’était pas une spécification de curseur (par exemple, une instruction SELECT) ; ou la connexion était en mode de validation manuelle et l’instruction exécutée n’a pas commencé une transaction.
[2] La connexion était en mode de validation automatique et l’instruction exécutée était une spécification de curseur (par exemple, une instruction SELECT).
[3] La connexion était en mode de validation manuelle et la source de données a commencé une transaction.
SQLFreeHandle
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(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] et [8] C5[6] et [8] |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_ENV.
[2] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DBC.
[3] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_STMT.
[4] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DESC.
[5] Il n’y avait qu’une seule instruction allouée sur la connexion.
[6] Plusieurs instructions ont été allouées sur la connexion.
[7] La connexion était en mode de validation manuelle.
[8] La connexion était en mode de validation automatique.
SQLFreeStmt
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH)[1] | (IH) | (IH) | (IH) | (IH) | -- | C5[3] --[4] |
(IH)[2] | (IH) | (IH) | (IH) | (IH) | -- | -- |
[1] Cette ligne affiche les transactions lorsque l’argument Option est SQL_CLOSE.
[2] Cette ligne affiche les transactions lorsque l’argument Option est SQL_UNBIND ou SQL_RESET_PARAMS.
[3] La connexion était en mode de validation automatique et aucun curseur n’était ouvert sur les instructions à l’exception de celle-ci.
[4] La connexion était en mode de validation manuelle, ou elle était en mode de validation automatique et un curseur était ouvert sur au moins une autre instruction.
SQLGetConnectAttr
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | -- | -- | -- |
[1] L’argument Attribut était SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE ou SQL_ATTR_TRACEFILE, ou une valeur avait été définie pour l’attribut de connexion.
[2] L’argument Attribut n’était pas SQL_ATTR_ACCESS_MODE, SQL_ATTR_AUTOCOMMIT, SQL_ATTR_LOGIN_TIMEOUT, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_TRACE ou SQL_ATTR_TRACEFILE, et une valeur n’avait pas été définie pour l’attribut de connexion.
SQLGetDiagField et SQLGetDiagRec
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH)[1] | -- | -- | -- | -- | -- | -- |
(IH)[2] | (IH) | -- | -- | -- | -- | -- |
(IH)[3] | (IH) | (IH) | (IH) | (IH) | -- | -- |
(IH)[4] | (IH) | (IH) | (IH) | -- | -- | -- |
[1] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_ENV.
[2] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DBC.
[3] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_STMT.
[4] Cette ligne affiche les transitions lorsque HandleType a été SQL_HANDLE_DESC.
SQLGetEnvAttr
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | -- | -- |
SQLGetFunctions
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
IH | IH | HY010 | HY010 | -- | -- | -- |
SQLGetInfo
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | 08003 | -- | -- | -- |
[1] L’argument InfoType était SQL_ODBC_VER.
[2] L’argument InfoType n’était pas SQL_ODBC_VER.
SQLMoreResults
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | --[3] C5[1] |
[1] La connexion était en mode de validation automatique et l’appel à SQLMoreResults n’a pas initialisé le traitement d’un jeu de résultats d’une spécification de curseur.
[2] La connexion était en mode de validation automatique et l’appel à SQLMoreResults a initialisé le traitement d’un jeu de résultats d’une spécification de curseur.
[3] La connexion était en mode de validation manuelle.
SQLNativeSql
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (08003) | (08003) | -- | -- | -- |
SQLPrepare
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | --[1] C6[2] | -- |
[1] La connexion était en mode de validation automatique, ou la source de données n’a pas commencé une transaction.
[2] La connexion était en mode de validation manuelle et la source de données a commencé une transaction.
SQLSetConnectAttr
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
IH | IH | --[1] 08003[2] | HY010 | --[3] 08002[4] HY011[5] | --[3] 08002[4] HY011[5] | --[3] et [6] C5[8] 08002[4] HY011[5] ou [7] |
[1] L’argument Attribut n’a pas été SQL_ATTR_TRANSLATE_LIB ni SQL_ATTR_TRANSLATE_OPTION.
[2] L’argument Attribut était SQL_ATTR_TRANSLATE_LIB ou SQL_ATTR_TRANSLATE_OPTION.
[3] L’argument Attribut n’a pas été SQL_ATTR_ODBC_CURSORS ni SQL_ATTR_PACKET_SIZE.
[4] L’argument Attribut était SQL_ATTR_ODBC_CURSORS.
[5] L’argument Attribut était SQL_ATTR_PACKET_SIZE.
[6] L’argument Attribut n’était pas SQL_ATTR_AUTOCOMMIT, ou l’argument Attribut était SQL_ATTR_AUTOCOMMIT et la définition de cet attribut n’a pas validée la transaction.
[7] L’argument Attribut était SQL_ATTR_TXN_ISOLATION.
[8] L’argument Attribut a été SQL_ATTR_AUTOCOMMIT et la définition de cet attribut a validé la transaction.
SQLSetEnvAttr
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | -- | -- | (HY010) | -- | -- | -- |
Toutes les autres fonctions ODBC
C0
Pas d’env. |
C1 Non alloué |
C2 Affecté |
C3 Besoin de données |
C4 Connecté |
C5 . |
C6 Transaction |
---|---|---|---|---|---|---|
(IH) | (IH) | (IH) | (IH) | (IH) | -- | -- |