Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Прежде чем приложение сможет подключиться к источнику данных или драйверу, он должен выделить дескриптор подключения следующим образом:
Приложение объявляет переменную типа SQLHDBC. Затем он вызывает SQLAllocHandle и передает адрес этой переменной, дескриптор среды, в которой выделяется соединение, и параметр SQL_HANDLE_DBC. Рассмотрим пример.
SQLHDBC hdbc1; SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);Диспетчер драйверов выделяет структуру, в которой хранятся сведения об инструкции, и возвращает дескриптор подключения в переменную.
Диспетчер драйверов не вызывает SQLAllocHandle в драйвере в настоящее время, так как он не знает, какой драйвер следует вызывать. Он задерживает вызов SQLAllocHandle в драйвере, пока приложение не вызовет функцию для подключения к источнику данных. Дополнительные сведения см. в разделе "Роль диспетчера драйверов" в процессе подключения далее в этом разделе.
Важно отметить, что выделение дескриптора подключения это не то же самое, что и загрузка драйвера. Драйвер не загружается до вызова функции подключения. Таким образом, после выделения дескриптора подключения и перед подключением к драйверу или источнику данных единственными функциями, которые приложение может вызывать с помощью дескриптора подключения, являются SQLSetConnectAttr, SQLGetConnectAttr или SQLGetInfo с параметром SQL_ODBC_VER. Вызов других функций с дескриптором подключения, например SQLEndTran, возвращает SQLSTATE 08003 (подключение не открыто). Полные сведения см. в приложении B: таблицы перехода состояния ODBC.
Дополнительные сведения об дескрипторах подключения см. в разделе "Дескрипторы подключений".