Funzione SQLDisconnect

Conformità
Versione introdotta: Conformità agli standard ODBC 1.0: ISO 92

Summary
SQLDisconnect chiude la connessione associata a un handle di connessione specifico.

Sintassi

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

Argomenti

ConnectionHandle
[Input] Handle di connessione.

Restituisce

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE o SQL_STILL_EXECUTING.

Diagnostica

Quando SQLDisconnect restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, è possibile ottenere un valore SQLSTATE associato chiamando SQLGetDiagRec con handleType SQL_HANDLE_DBC e handle di ConnectionHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLDisconnect e ne illustra ognuno nel contesto di questa funzione. la notazione "(DM)" precede le descrizioni di SQLSTATE restituite da Gestione driver. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, se non specificato diversamente.

SQLSTATE Errore Descrizione
01000 Avviso generale Messaggio informativo specifico del driver. La funzione restituisce SQL_SUCCESS_WITH_INFO.
01002 Errore di disconnessione Si è verificato un errore durante la disconnessione. Tuttavia, la disconnessione è riuscita. La funzione restituisce SQL_SUCCESS_WITH_INFO.
08003 Connessione non aperta (DM) La connessione specificata nell'argomento ConnectionHandle non è stata aperta.
25000 Stato della transazione non valido È stata rilevata una transazione in corso nella connessione specificata dall'argomento ConnectionHandle. La transazione rimane attiva.
HY000 Errore generale: Si è verificato un errore per il quale non esiste un SQLSTATE specifico e per il quale non è stato definito sqlSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer * MessageText descrive l'errore e la relativa causa.
HY001 Errore di allocazione della memoria Il driver non è riuscito ad allocare la memoria necessaria per supportare l'esecuzione o il completamento della funzione.
HY008 Operation canceled L'elaborazione asincrona è stata abilitata per ConnectionHandle. La funzione è stata chiamata e prima dell'esecuzione della funzione SQLCancelHandle è stata chiamata su ConnectionHandle. La funzione è stata quindi chiamata di nuovo su ConnectionHandle.

La funzione è stata chiamata e prima del termine dell'esecuzione di SQLCancelHandle è stata chiamata su ConnectionHandle da un thread diverso in un'applicazione multithreading.
HY010 Errore della sequenza di funzione (DM) È stata chiamata una funzione in esecuzione in modo asincrono per un StatementHandle associato a ConnectionHandle ed era ancora in esecuzione quando è stato chiamato SQLDisconnect.

(DM) Una funzione in esecuzione in modo asincrono (non questa) è stata chiamata per ConnectionHandle ed era ancora in esecuzione quando è stata chiamata questa funzione.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos è stato chiamato per un StatementHandle associato a ConnectionHandle e ha restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution.
HY013 Errore di gestione della memoria Non è stato possibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente.
HY117 La connessione è stata sospesa a causa di uno stato di transazione sconosciuto. Sono consentite solo le funzioni di disconnessione e di sola lettura. (DM) Per altre informazioni sullo stato sospeso, vedere Funzione SQLEndTran.
HYT01 Timeout della connessione scaduto Il periodo di timeout della connessione è scaduto prima che l'origine dati risponde alla richiesta e la connessione sia ancora attiva. Il periodo di timeout della connessione viene impostato tramite SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Il driver non supporta questa funzione (DM) Il driver associato a ConnectionHandle non supporta la funzione .
IM017 Il polling è disabilitato in modalità di notifica asincrona Ogni volta che viene usato il modello di notifica, il polling è disabilitato.
IM018 SQLCompleteAsync non è stato chiamato per completare l'operazione asincrona precedente su questo handle. Se la chiamata di funzione precedente sull'handle restituisce SQL_STILL_EXECUTING e se la modalità di notifica è abilitata, è necessario chiamare SQLCompleteAsync sull'handle per eseguire la post-elaborazione e completare l'operazione.

Commenti

Se un'applicazione chiama SQLDisconnect dopo che SQLBrowseConnect restituisce SQL_NEED_DATA e prima che restituisca un codice restituito diverso, il driver annulla il processo di esplorazione della connessione e restituisce la connessione a uno stato non interconnesso.

Se un'applicazione chiama SQLDisconnect mentre è presente una transazione incompleta associata all'handle di connessione, il driver restituisce SQLSTATE 25000 (stato della transazione non valido), che indica che la transazione è invariata e la connessione è aperta. Una transazione incompleta è una transazione di cui non è stato eseguito il commit o il rollback con SQLEndTran.

Se un'applicazione chiama SQLDisconnect prima di aver liberato tutte le istruzioni associate alla connessione, il driver, dopo la disconnessione dall'origine dati, libera tali istruzioni e tutti i descrittori allocati in modo esplicito nella connessione. Tuttavia, se una o più istruzioni associate alla connessione sono ancora in esecuzione in modo asincrono, SQLDisconnect restituisce SQL_ERROR con un valore SQLSTATE HY010 (errore della sequenza di funzione). INOLTRE, SQLDisconnect libera tutte le istruzioni associate e tutti i descrittori allocati in modo esplicito nella connessione, se la connessione è in uno stato sospeso o se SQLDisconnect è stato annullato correttamente da SQLCancelHandle.

Per informazioni su come un'applicazione usa SQLDisconnect, vedere Disconnessione da un'origine dati o da un driver.

Disconnessione da una connessione in pool

Se il pool di connessioni è abilitato per un ambiente condiviso e un'applicazione chiama SQLDisconnect su una connessione in tale ambiente, la connessione viene restituita al pool di connessioni ed è ancora disponibile per altri componenti che usano lo stesso ambiente condiviso.

Esempio di codice

Vedere Programma ODBC di esempio,Funzione SQLBrowseConnecte Funzione SQLConnect.

Per informazioni su Vedere
Allocazione di un handle Funzione SQLAllocHandle
Connessione a un'origine dati Funzione SQLConnect
Connessione a un'origine dati tramite una stringa di connessione o una finestra di dialogo Funzione SQLDriverConnect
Esecuzione di un'operazione di commit o rollback SQLEndTran Function
Liberare un handle di connessione Funzione SQLFreeConnect

Vedere anche

Informazioni di riferimento sulle API ODBC
File di intestazione ODBC