Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Первой задачей для любого приложения ODBC является загрузка диспетчера драйверов; Как это делается, зависит от операционной системы. Например, на компьютере под управлением Microsoft Windows NT Server или Windows 2000 Server, Windows NT Workstation/Windows 2000 Профессиональный или Microsoft Windows 95/98 приложение либо связывается с библиотекой Диспетчера драйверов, либо вызывает LoadLibrary для загрузки библиотеки Диспетчера драйверов.
Следующая задача, которую необходимо выполнить, прежде чем приложение может вызвать любую другую функцию ODBC, — инициализировать среду ODBC и выделить дескриптор среды следующим образом:
Приложение объявляет переменную типа SQLHENV. Затем он вызывает SQLAllocHandle и передает адрес этой переменной и параметр SQL_HANDLE_ENV. Рассмотрим пример.
SQLHENV henv1; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);Диспетчер драйверов выделяет структуру для хранения сведений о среде и возвращает дескриптор среды в виде переменной.
Диспетчер драйверов не вызывает SQLAllocHandle в драйвере в настоящее время, так как он не знает, какой драйвер следует вызывать. Он задерживает вызов SQLAllocHandle в драйвере, пока приложение не вызовет функцию для подключения к источнику данных. Дополнительные сведения см. в разделе "Роль диспетчера драйверов" в процессе подключения далее в этом разделе.
Когда приложение завершает работу с ODBC, оно освобождает идентификатор окружения, используя SQLFreeHandle. После освобождения ресурсов среды это ошибка программирования приложения использовать дескриптор среды в вызове функции ODBC; это имеет неопределенные, но, вероятно, очень серьезные последствия.
При вызове SQLFreeHandle драйвер освобождает структуру, используемую для хранения сведений об среде. Обратите внимание, что SQLFreeHandle не может вызываться для дескриптора среды до тех пор, пока не будут освобождены все дескрипторы подключений в этой дескрипторе среды.
Дополнительные сведения о дескрипторе среды см. в разделе «Дескриптор среды».