Partager via


SQLDisconnect, fonction

conformité
Version introduite : Conformité aux normes ODBC 1.0 : ISO 92

résumé
SQLDisconnect ferme la connexion associée à un handle de connexion spécifique.

Syntaxe

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

Arguments

connectionHandle
[Entrée] Handle de connexion.

Retourne

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE ou SQL_STILL_EXECUTING.

Diagnostic

Lorsque SQLDisconnect retourne SQL_ERROR ou SQL_SUCCESS_WITH_INFO, une valeur SQLSTATE associée peut être obtenue en appelant sqlGetDiagRec avec un HandleType de SQL_HANDLE_DBC et un Handle de ConnectionHandle. Le tableau suivant répertorie les valeurs SQLSTATE couramment retournées par SQLDisconnect et explique chacune d’elles dans le contexte de cette fonction ; la notation « (DM) » précède les descriptions des SQLSTATEs retournées par le Gestionnaire de pilotes. Le code de retour associé à chaque valeur SQLSTATE est SQL_ERROR, sauf indication contraire.

SQLSTATE Erreur Description
01000 Avertissement général Message d’information spécifique au pilote. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
01002 Erreur de déconnexion Une erreur s’est produite pendant la déconnexion. Toutefois, la déconnexion a réussi. (La fonction retourne SQL_SUCCESS_WITH_INFO.)
08003 Connexion non ouverte (DM) La connexion spécifiée dans l’argument ConnectionHandle n’a pas été ouverte.
25000 État de transaction non valide Une transaction a été effectuée sur la connexion spécifiée par l’argument ConnectionHandle. La transaction reste active.
HY000 Erreur générale Une erreur s’est produite pour laquelle il n’y avait aucun SQLSTATE spécifique et pour lequel aucun SQLSTATE spécifique à l’implémentation n’a été défini. Le message d’erreur retourné par SQLGetDiagRec dans la mémoire tampon *MessageText décrit l’erreur et sa cause.
HY001 Erreur d’allocation de mémoire Le pilote n’a pas pu allouer de mémoire nécessaire pour prendre en charge l’exécution ou l’achèvement de la fonction.
HY008 Opération annulée Le traitement asynchrone a été activé pour leConnectionHandle . La fonction a été appelée et avant de terminer l’exécution de fonction SQLCancelHandle a été appelée sur le ConnectionHandle. Ensuite, la fonction a été appelée à nouveau sur la ConnectionHandle.

La fonction a été appelée et avant de terminer l’exécution SQLCancelHandle a été appelée sur le ConnectionHandle à partir d’un autre thread dans une application multithread.
HY010 Erreur de séquence de fonction (DM) Une fonction en cours d’exécution asynchrone a été appelée pour un StatementHandle associé au ConnectionHandle et était toujours en cours d’exécution lorsque SQLDisconnect a été appelé.

(DM) Une fonction en cours d’exécution asynchrone (pas celle-ci) a été appelée pour le ConnectionHandle et était toujours en cours d’exécution lorsque cette fonction a été appelée.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsou SQLSetPos a été appelé pour un StatementHandle associé au ConnectionHandle et retourné SQL_NEED_DATA. Cette fonction a été appelée avant que les données ne soient envoyées pour tous les paramètres ou colonnes de données à l’exécution.
HY013 Erreur de gestion de la mémoire L’appel de fonction n’a pas pu être traité, car les objets de mémoire sous-jacents n’ont pas pu être accessibles, éventuellement en raison de conditions de mémoire insuffisantes.
HY117 La connexion est suspendue en raison d’un état de transaction inconnu. Seules les fonctions de déconnexion et de lecture seule sont autorisées. (DM) Pour plus d’informations sur l’état suspendu, consultez fonction SQLEndTran.
HYT01 Expiration du délai d’expiration de la connexion La période d’expiration de la connexion a expiré avant que la source de données ne réponde à la demande et que la connexion soit toujours active. La période d’expiration de la connexion est définie via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Le pilote ne prend pas en charge cette fonction (DM) Le pilote associé au ConnectionHandle ne prend pas en charge la fonction.
IM017 L’interrogation est désactivée en mode de notification asynchrone Chaque fois que le modèle de notification est utilisé, l’interrogation est désactivée.
IM018 SQLCompleteAsync n’a pas été appelé pour terminer l’opération asynchrone précédente sur ce handle. Si l’appel de fonction précédent sur le handle retourne SQL_STILL_EXECUTING et si le mode de notification est activé, SQLCompleteAsync doit être appelé sur le handle pour effectuer un post-traitement et terminer l’opération.

Commentaires

Si une application appelle SQLDisconnect après SQLBrowseConnect retourne SQL_NEED_DATA et avant qu’elle retourne un autre code de retour, le pilote annule le processus de navigation de connexion et retourne la connexion à un état non connecté.

Si une application appelle SQLDisconnect alors qu’il existe une transaction incomplète associée au handle de connexion, le pilote retourne SQLSTATE 25000 (état de transaction non valide), indiquant que la transaction n’est pas modifiée et que la connexion est ouverte. Une transaction incomplète est une transaction qui n’a pas été validée ou restaurée avec SQLEndTran.

Si une application appelle SQLDisconnect avant qu’elle n’ait libéré toutes les instructions associées à la connexion, le pilote, après qu’il se déconnecte correctement de la source de données, libère ces instructions et tous les descripteurs qui ont été explicitement alloués sur la connexion. Toutefois, si une ou plusieurs des instructions associées à la connexion sont toujours en cours d’exécution asynchrone, SQLDisconnect retourne SQL_ERROR avec une valeur SQLSTATE d’HY010 (erreur de séquence de fonction). En outre, SQLDisconnect libère toutes les instructions associées et tous les descripteurs qui ont été explicitement alloués sur la connexion, si la connexion est dans un état suspendu ou si sqlDisconnect a été annulé avec succès par SQLCancelHandle.

Pour plus d’informations sur l’utilisation d’une application SQLDisconnect, consultez Déconnexion d’une source de données ou d’unde pilote .

Déconnexion d’une connexion mise en pool

Si le regroupement de connexions est activé pour un environnement partagé et qu’une application appelle SQLDisconnect sur une connexion dans cet environnement, la connexion est retournée au pool de connexions et est toujours disponible pour d’autres composants utilisant le même environnement partagé.

Exemple de code

Consultez exemple de programme ODBC, de fonction SQLBrowseConnect et fonction SQLConnect.

Pour plus d’informations sur Voir
Allocation d’un handle fonction SQLAllocHandle
Connexion à une source de données fonction SQLConnect
Connexion à une source de données à l’aide d’une chaîne de connexion ou d’une boîte de dialogue fonction SQLDriverConnect
Exécution d’une opération de validation ou de restauration fonction SQLEndTran
Libération d’un handle de connexion fonction SQLFreeConnect

Voir aussi

informations de référence sur l’API ODBC
fichiers d’en-tête ODBC