1、ODBC基本概念
ODBCはRDBMSにアクセスするための共通のインタフェースです。
ハンドル
ODBCアプリケーションでは、データベース接続やSQL文など基本的機能をハンドルを使用して
定義し、一連のリソースを管理している
SQL_HANDLE_ENV 環境ハンドル
SQL_HANDLE_DBC データベース接続ハンドル
SQL_HANDLE_STMT ステートメントハンドル
SQL_HANDLE_DESC 記述子ハンドル
関数の戻り値とエラー処理
戻り値のデータ型はSQLRETURNである。
戻り値は、以下のように
SQL_SUCCESS 正常に終了した。
SQL_SUCCESS_WITH_INFO 正常に終了した
SQL_NO_DATA_FOUND これ以上のデータなし
SQL_ERROR 失敗した
SQL_INVALID_HANDLE 無効なハンドルがパラメータとしてわたれた。
SQL_ERRORまたははSQL_SUCESS_WITH_INFO場合、診断情報を生成されます。
SQLERROR(ODBCバージョン3より前)
SQLGetDiagRec(ODBCバージョン3以降)
2、開発流れ
ハンドルの割付
次のODBC関数を呼び出すことにより、ハンドルを割り当てることができます
・SQLAllocEnv,SQLAllocConnect,SQLAllocStmt( ODBCバージョン3前)
・SQLAllocHandle( ODBCバージョン3以降)
データソースへの接続
アプリケーションは環境ハンドルとデータベース接続ハンドルを割り付けてから、
データソースに接続します。
・SQLConnect
・SQLDriverConnect
・SQLBrowseConnect
SQL文の実行
二つの方法が用意されています。
・直接実行
・準備後の実行
直接実行する場合、SQLExecDirect関数でSQL文を直接実行します。
準備後に実行する場合、あらかじめSQLPrepare関数でSQL文を準備しておき,
SQLExecute関数で実行します。
結果セットの取り出し
SQLの実行結果(列)とアプリケーション・プログラム変数を関連つけるは、
SQLBindCol関数でバインドします。
結果セットから1行ずつ行を取り出すには、SQLFetch関数を使用する
結果セットからまとめて行を取り出すには、SQLExtendedFetch関数を使用する
トランザクション制御
ODBCの仕様では、デフォルトで自動コミットが有効になっています。
自動コミットのON/OFFを切り替えるには、SQLSetConnectionOption関数を使用する
自動コミットが無効な場合、コミット及びロールバックを明示的に行う。
トランザクション制御はSQLTransact関数を行います。
データベースとの切断
データベースの切断を行うには、SQLDisconnect関数を使用する。
ハンドルの解放
次の関数を呼び出すことにより、バンドルを解放することができます。
・SQLFreeStmt, SQLFreeConnect, SQLFreeEnv(ODBCバージョン3前)
・SQLFreeHandle(ODBCバージョン3以降)