Выделение дескриптора среды

Первой задачей для любого приложения ODBC является загрузка диспетчера драйверов; Как это делается, зависит от операционной системы. Например, на компьютере под управлением Microsoft Windows NT Server или Windows 2000 Server, Windows NT Workstation/Windows 2000 Профессиональный или Microsoft Windows 95/98 приложение либо связывается с библиотекой Диспетчера драйверов, либо вызывает LoadLibrary для загрузки библиотеки Диспетчера драйверов.

Следующая задача, которую необходимо выполнить, прежде чем приложение может вызвать любую другую функцию ODBC, — инициализировать среду ODBC и выделить дескриптор среды следующим образом:

  1. Приложение объявляет переменную типа SQLHENV. Затем он вызывает SQLAllocHandle и передает адрес этой переменной и параметр SQL_HANDLE_ENV. Например:

    SQLHENV henv1;  
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);  
    
  2. Диспетчер драйверов выделяет структуру, в которой хранятся сведения о среде, и возвращает дескриптор среды в переменной.

Диспетчер драйверов не вызывает SQLAllocHandle в драйвере в настоящее время, так как он не знает, какой драйвер следует вызывать. Он задерживает вызов SQLAllocHandle в драйвере, пока приложение не вызовет функцию для подключения к источнику данных. Дополнительные сведения см. в разделе "Роль диспетчера драйверов" в процессе Подключение ion, далее в этом разделе.

Когда приложение завершит работу с ODBC, оно освобождает дескриптор среды с помощью SQLFreeHandle. После освобождения среды это ошибка программирования приложения для использования дескриптора среды в вызове функции ODBC; это не определено, но, вероятно, смертельные последствия.

При вызове SQLFreeHandle драйвер освобождает структуру, используемую для хранения сведений об среде. Обратите внимание, что SQLFreeHandle не может вызываться для дескриптора среды до тех пор, пока не будут освобождены все дескрипторы подключений в этой дескрипторе среды.

Дополнительные сведения об дескрипторе среды см. в разделе "Дескриптор среды".