Funzione SQLDisconnect
conformità
Versione introdotta: Conformità agli standard ODBC 1.0: ISO 92
riepilogo
SQLDisconnect chiude la connessione associata a un handle di connessione specifico.
Sintassi
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Argomenti
ConnectionHandle
[Input] Handle di connessione.
Rendiconto
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE o SQL_STILL_EXECUTING.
Diagnostica
Quando
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 era aperta. |
25000 | Stato della transazione non valido | È stata eseguita una transazione in corso sulla connessione specificata dall'argomento ConnectionHandle. La transazione rimane attiva. |
HY000 | Errore generale | Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun 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 memoria necessaria per supportare l'esecuzione o il completamento della funzione. |
HY008 | Operazione annullata | L'elaborazione asincrona è stata abilitata per l'ConnectionHandle. La funzione è stata chiamata e prima di terminare l'esecuzione di funzione SQLCancelHandle è stata chiamata sul ConnectionHandle. La funzione è stata quindi chiamata di nuovo nel ConnectionHandle. La funzione è stata chiamata e prima di terminare l'esecuzione di sqlCancelHandle è stata chiamata sul ConnectionHandle da un thread diverso in un'applicazione multithread. |
HY010 | Errore della sequenza di funzioni | (DM) È stata chiamata una funzione in esecuzione asincrona per un StatementHandle associato all'ConnectionHandle ed era ancora in esecuzione quando è stata chiamata SQLDisconnect. (DM) È stata chiamata una funzione in esecuzione asincrona (non questa) per il ConnectionHandle ed era ancora in esecuzione quando questa funzione è stata chiamata. (DM) |
HY013 | Errore di gestione della memoria | Impossibile 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 viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. | (DM) Per altre informazioni sullo stato sospeso, vedere funzione SQLEndTran. |
HYT01 | Timeout connessione scaduto | Il periodo di timeout della connessione è scaduto prima che l'origine dati ha risposto 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 al 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, SQLCompleteAsync deve essere chiamata sull'handle per eseguire la post-elaborazione e completare l'operazione. |
Commenti
Se un'applicazione chiama SQLDisconnect dopo 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 connesso.
Se un'applicazione chiama SQLDisconnect mentre è presente una transazione incompleta associata all'handle di connessione, il driver restituisce SQLSTATE 25000 (stato transazione non valida), 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 liberare 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 di sequenza di funzione). Inoltre, SQLDisconnect libera tutte le istruzioni associate e tutti i descrittori allocati in modo esplicito nella connessione, se la connessione è in stato sospeso o se SQLDisconnect è stata annullata 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 in 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.
Funzioni correlate
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 | funzione SQLEndTran |
Liberare un handle di connessione | funzione SQLFreeConnect |
Vedere anche
di riferimento all'API ODBC
file di intestazione ODBC