ODBC. Прямой вызов функций ODBC API
Классы базы данных предоставляют более простой интерфейс для источника данных по сравнению с ODBC. Поэтому классы не могут инкапсулировать все интерфейсы API ODBC. Чтобы использовать любую функцию за пределами возможностей классов, необходимо непосредственно вызывать функции API ODBC. Например, напрямую необходимо вызывать функции каталогов ODBC (::SQLColumns, ::SQLProcedures, ::SQLTables и др.).
Примечание
Источники данных ODBC доступны с помощью классов ODBC MFC, как описано в данном разделе, или с помощью классов DAO MFC.
Чтобы вызвать функцию API ODBC напрямую, необходимо выполнить те же действия, что и для вызова функции без поддержки платформы. К ним относятся:
Выделение памяти для хранения всех результатов, возвращаемых функцией.
Передача дескриптора HDBC или HSTMT ODBC в зависимости от подписи параметров функции. Следует использовать макрос AFXGetHENV, чтобы извлечь дескриптор ODBC.
Переменные членов CDatabase::m_hdbc и CRecordset::m_hstmt являются доступными, поэтому нет необходимости самостоятельно выделять для них память и инициализировать.
Возможный вызов дополнительных функций ODBC, предваряющих вызов основной функции или следующих за ним.
Отмена выделения памяти по окончании.
Дополнительные сведения об этих действиях см. в документации MSDN по SDK Open Database Connectivity (ODBC).
Кроме этого необходимо выполнить дополнительные действия, чтобы проверить возвращаемые значения функции, убедиться, что программа не ожидает асинхронного вызова для завершения и т. д. Эти действия можно упростить с помощью макросов AFX_SQL_ASYNC и AFX_SQL_SYNC. Дополнительные сведения см. в разделе Макросы и глобальные объекты в Справочнике по MFC.