SODBC クラス

VC++ からMySQL に対してJDBC のようにアクセスできたらと思い作りました。Win32API のSQL〜関数を手順どおり呼び出すだけのラッパー クラスです。ODBC もデータベースも奥が深いので、簡易の実装でごまかしてます(^^;
更新日 2014-07-29

仕様

実装はシンプルです。Win32API に用意されてるSQL?? 関数を手順どおり呼び出してるだけのラッパークラスです。データベースに 対してはSQL 文を送信し、戻り値があればSQLResult クラスに取得できます。SQLResult クラスはSODBC.h に定義された自作のクラスで、 SJString の二次元配列でデータを保持し、簡単に利用できます。

ソースコード

sodbc.h 右クリックで「対象をファイルに保存」でダウンロードしてください。

依存関係

sjstring.hscritical.hも使用してます。同じフォルダに入れておいてね。

メソッド

connect()

データソース名、ユーザー名、パスワードの三つでデータベースに接続します。
SODBC db;
BOOL bConnect = db.connect( "MySQL_ODBC", "ast", "potechi");

disconnect()

データベースから切断します。
db.disconnect();

preparedStatment()

SQL 文を準備します。SQL 文は文字列で人間に読みやすい構文です。これをネイティブコードに書き直す?ようです。速度が上がるそうです。 SODBC では必ずこの関数にてSQL 文を準備します。後で実行する時に使うキーワードを割り当てて作成します。一度作ったSQL 文はSODB インスタンスに 保持され、今後キーワードを用いて何度でも実行できます。
BOOL bRet = db.preparedStatment( "SQL_01", "select * from shop_ast"); 

execute()

preparedStatement() を用いて作成したSQL 文を、その時関連付けしたキーワードで参照して実行します。戻り値がある場合はSODBCResult クラスで 取得できます。
SODBCResult retVal;
BOOL bExecute = db.execute( "SQL_01", &retVal);
if (bExecute != FALSE)
{
	// SODBCResult::getString() は行番号とカラム(列名) から値を返す関数
	SJString strName = retVal.getString (1, "name");
}

SODBCResult::getString()

行番号と列番号(もしくはカラム名) から参照できる値をSJString で返します。