Zuordnen des Umgebungshandles

Die erste Aufgabe einer ODBC-Anwendung besteht darin, den Treiber-Manager zu laden. Wie dies geschieht, ist vom Betriebssystem abhängig. Auf einem Computer mit Microsoft Windows NT Server/Windows 2000 Server, Windows NT Workstation/Windows 2000 Professional oder Microsoft Windows 95/98 verknüpft sich zum Beispiel die Anwendung entweder mit der Treiber-Manager-Bibliothek oder ruft LoadLibrary auf, um die Treiber-Manager-DLL zu laden.

Die nächste Aufgabe, die ausgeführt werden muss, bevor eine Anwendung eine andere ODBC-Funktion aufrufen kann, besteht darin, die ODBC-Umgebung zu initialisieren und einen Umgebungshandle wie folgt zuzuweisen:

  1. Die Anwendung deklariert eine Variable vom Typ SQLHENV. Danach ruft sie SQLAllocHandle auf und gibt die Adresse dieser Variable und die Option SQL_HANDLE_ENV weiter. Beispiel:

    SQLHENV henv1;  
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);  
    
  2. Der Treiber-Manager weist eine Struktur zu, in der Informationen über die Umgebung zu speichern sind, und gibt den Umgebungshandle in der Variable zurück.

Der Treiber-Manager ruft SQLAllocHandle hier nicht im Treiber auf, weil er nicht weiß, welcher Treiber aufgerufen werden soll. Der Aufruf von SQLAllocHandle im Treiber wird verzögert, bis die Anwendung eine Funktion aufruft, um eine Verbindung mit einer Datenquelle herzustellen. Weitere Informationen finden Sie unter Die Rolle des Treiber-Managers im Verbindungsprozess weiter unten in diesem Abschnitt.

Wenn die Anwendung mit der Verwendung von ODBC fertig ist, wird der Umgebungshandle mit SQLFreeHandle freigegeben. Wenn die Umgebung freigegeben ist, stellt es einen Anwendungsprogrammierfehler dar, den Umgebungshandle in einem Aufruf einer ODBC-Funktion zu verwenden. Wenn das dennoch geschieht, hat es unbestimmte, aber vermutlich fatale Folgen.

Wenn SQLFreeHandle aufgerufen wird, gibt der Treiber die zum Speichern von Informationen über die Umgebung verwendete Struktur frei. Beachten Sie, dass SQLFreeHandle für einen Umgebungshandle erst dann aufgerufen werden kann, wenn alle Verbindungshandles dieses Umgebungshandles freigegeben sind.

Weitere Informationen zum Umgebungshandle finden Sie unter Umgebungshandles.