Allocazione dell'handle di ambiente

La prima attività per qualsiasi applicazione ODBC consiste nel caricare Gestione driver; il modo in cui avviene il caricamento dipende dal sistema operativo. Ad esempio, in un computer che esegue Microsoft Windows NT Server/Windows 2000 Server, Windows NT Workstation/Windows 2000 Professional o Microsoft Windows 95/98, l'applicazione si collega alla libreria di Gestione driver o chiama LoadLibrary per caricare la DLL di Gestione driver.

L'attività successiva, che deve essere eseguita prima che un'applicazione possa chiamare qualsiasi altra funzione ODBC, consiste nell'inizializzare l'ambiente ODBC e allocare un handle di ambiente, come indicato di seguito:

  1. L'applicazione dichiara una variabile di tipo SQLHENV. Chiama quindi SQLAllocHandle e passa l'indirizzo di questa variabile e l'opzione SQL_HANDLE_ENV. Ad esempio:

    SQLHENV henv1;  
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);  
    
  2. Gestione driver alloca una struttura in cui archiviare le informazioni sull'ambiente e restituisce l'handle di ambiente della variabile.

Il driver manager non chiama SQLAllocHandle nel driver in questo momento perché non sa che driver chiamare. Ritarda la chiamata a SQLAllocHandle nel driver finché l'applicazione non chiama una funzione per connettersi a un'origine dati. Per altre informazioni, vedere Ruolo di Gestione driver nel processo di connessione più avanti in questa sezione.

Al termine dell'uso di ODBC, l'applicazione libera l'handle dell'ambiente con SQLFreeHandle. Dopo aver liberato l'ambiente, usare l'istruzione l’handle di ambiente in a una funzione ODBC è un errore di programmazione dell'applicazione; farlo ha conseguenze sconosciute ma probabilmente fatali.

Quando viene chiamato SQLFreeHandle, il driver rilascia la struttura usata per archiviare le informazioni riguardo all'ambiente. Si noti che SQLFreeHandle non può essere chiamato per un handle di ambiente fino a quando non sono stati liberati tutti gli handle di connessione in tale handle di ambiente.

Per altre informazioni sull’handle di ambiente, vedere Handle di ambiente.