ODBC: ODBC API 関数の直接呼び出し
データベース クラスによって、ODBC よりもシンプルなインターフェイスがデータ ソースに提供されます。 結果として、クラスによってすべての ODBC API がカプセル化されるとは限りません。 クラスでできること以外の機能については、ODBC API 関数を直接呼び出す必要があります。 たとえば、ODBC カタログ関数 (::SQLColumns
、::SQLProcedures
、::SQLTables
など) は直接呼び出す必要があります。
Note
ODBC データ ソースには、ここで説明するように、MFC ODBC クラス経由でアクセスできます。また、MFC DAO (Data Access Object) クラス経由でもアクセスできます。
ODBC API 関数を直接呼び出すには、フレームワークなしで呼び出しを行う場合と同じステップを実行する必要があります。 ステップは次のとおりです。
呼び出しから返される結果にストレージを割り当てる。
関数のパラメーター シグネチャに応じて、ODBC の
HDBC
ハンドルまたはHSTMT
ハンドルを渡す。 ODBC のハンドルを取得するには、AFXGetHENV マクロを使用します。ユーザー自身で割り当てて初期化する必要がないように、メンバー変数
CDatabase::m_hdbc
とCRecordset::m_hstmt
が用意されています。できれば追加の ODBC 関数を呼び出して、メインの呼び出しの準備またはフォローアップを行う。
完了したらストレージの割り当てを解除する。
これらのステップの詳細については、「ODBC のプログラマ リファレンス」を参照してください。
これらのステップに加えて、関数の戻り値を確認する、非同期呼び出しが完了するのをプログラムが待機していないことを確認するなどのために、追加のステップを実行する必要があります。 これらの最後のステップは、AFX_SQL_ASYNC マクロと AFX_SQL_SYNC マクロを使用して簡略化できます。 詳細については、「MFC マクロとグローバル」を参照してください。