ODBC. Прямой вызов функций ODBC API

Классы базы данных предоставляют более простой интерфейс к источнику данных, чем odBC. В результате классы не инкапсулируют все API ODBC. Для любых функций, которые выходят за пределы возможностей классов, необходимо напрямую вызывать функции API ODBC. Например, необходимо напрямую вызвать функции каталога ODBC (::SQLColumns, ::SQLProcedures, ::SQLTablesи другие).

Примечание.

Источники данных ODBC доступны через классы ODBC MFC, как описано в этом разделе, или с помощью классов объектов ДОСТУПА к данным MFC (DAO).

Чтобы вызвать функцию API ODBC напрямую, необходимо выполнить те же действия, которые необходимо предпринять, если вы выполняете вызовы без платформы. Ниже приведены шаги.

  • Выделить хранилище для любых результатов, возвращаемого вызовом.

  • Передайте ODBC HDBC или HSTMT дескриптор в зависимости от сигнатуры параметра функции. Используйте макрос AFXGetHENV для получения дескриптора ODBC.

    Переменные-члены CDatabase::m_hdbc и CRecordset::m_hstmt доступны, чтобы не нужно выделять и инициализировать их самостоятельно.

  • Возможно, вызовите дополнительные функции ODBC для подготовки или выполнения основного вызова.

  • После завершения размещения хранилища будет освобождено.

Дополнительные сведения об этих шагах см. в справочнике программиста ODBC.

В дополнение к этим шагам необходимо выполнить дополнительные действия для проверка возвращаемых значений функции, убедитесь, что программа не ожидает завершения асинхронного вызова и т. д. Эти последние шаги можно упростить с помощью макросов AFX_SQL_ASYNC и AFX_SQL_SYNC. Дополнительные сведения см. в макросах и глобальных платформах MFC.

См. также

Основы ODBC