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.