ODBC : ODBC API 関数の直接呼び出し
更新 : 2007 年 11 月
データベース クラスを使うと、ODBC を使うより簡単なインターフェイスでデータ ソースにアクセスできます。ただし、データベース クラスは、すべての ODBC API をカプセル化するわけではありません。データベース クラスがサポートしていない機能を使うには、ODBC API 関数を直接呼び出す必要があります。たとえば、ODBC カタログ関数 (::SQLColumns、::SQLProcedures、::SQLTables など) は直接呼び出します。
メモ : |
---|
ODBC データ ソースには、ここで説明するように、MFC ODBC クラス経由でアクセスできます。また、MFC DAO (Data Access Object) クラス経由でもアクセスできます。 |
ODBC API 関数を直接呼び出すには、フレームワークを使わずに関数を呼び出すときと同じ手順で行います。手順は次のとおりです。
戻り値用の領域を確保します。
関数のパラメータ書式に応じて、ODBC HDBC ハンドルか HSTMT ハンドルを渡します。AFXGetHENV マクロを使って ODBC ハンドルを取得します。
メンバ変数 CDatabase::m_hdbc および CRecordset::m_hstmt を使えるため、領域の割り当てや初期化は必要はありません。
呼び出しの準備または呼び出しの後始末のために、ODBC 関数を必要に応じて呼び出します。
割り当てた領域を解放して、終了します。
各手順の詳細については、MSDN ドキュメントの ODBC (Open Database Connectivity) SDK を参照してください。
上記の手順に加え、関数の戻り値のチェックや、非同期呼び出しの終了を待たないようにするための手順なども必要です。これらの追加手順については、AFX_SQL_ASYNC マクロや AFX_SQL_SYNC マクロを使うと簡単です。詳細については、『MFC リファレンス』の「マクロ、グローバル関数、およびグローバル変数」を参照してください。