ODBC:直接调用 ODBC API 函数
与 ODBC 相比,数据库类可为数据源提供更简单的接口。 因此,这些类并未封装所有 ODBC API。 对于超出类功能的任何功能,必须直接调用 ODBC API 函数。 例如,必须直接调用 ODBC 目录函数(::SQLColumns
、::SQLProcedures
、::SQLTables
等)。
注意
可以通过 MFC ODBC 类(如本主题中所述)或通过 MFC 数据访问对象 (DAO) 类访问 ODBC 数据源。
若要直接调用 ODBC API 函数,必须采取与在没有框架的情况下进行调用相同的步骤。 这些步骤包括:
为调用返回的任何结果分配存储空间。
传递 ODBC
HDBC
或HSTMT
句柄,具体取决于函数的参数签名。 使用 AFXGetHENV 宏检索 ODBC 句柄。成员变量
CDatabase::m_hdbc
和CRecordset::m_hstmt
可用,因此你无需自己分配和初始化它们。可能会调用其他 ODBC 函数来准备或跟进主调用。
完成后释放存储空间。
有关这些步骤的详细信息,请参阅 ODBC 程序员参考。
除了这些步骤之外,还需要采取额外的步骤来检查函数返回值,确保程序没有等待异步调用完成,等等。 可以通过使用 AFX_SQL_ASYNC 和 AFX_SQL_SYNC 宏来简化这些最后的步骤。 有关详细信息,请参阅 MFC 宏和全局。