*db.h (ODBC)

C++でODBCを使ってデータベースにアクセスするヘッダファイル.

PerlのDBIにインターフェイスを似せてあります.

利用の制限はありません.個人の責任において自由に使ってください.

***注意

ODBCを試すときに動作確認のために書いたものなので, まだ完成度が低いです.

オーバーロードがいいかげんなので,データの出し入れには, std::string,int,longの''変数''以外は使わないようにしてください.

**ダウンロード

-[[db.h]]

**サンプル

-VC++: 普通にコンパイル -gcc: g++ dbtest.cpp -lodbc

&source{{ #include <iostream> #include <string> #include "db.h" using namespace std;

int main(){

DB *dbh = new DB("DSN=TestMysql;Server=binzume.net;Database=test;UID=uname;PWD=passwd;"); if (dbh->error()) cerr << "connect error" << endl;

// 追加 STH sth = dbh->prepare("insert into user values(?,?,?);"); if (!sth) cerr << "error: prepare" << endl; int id=123; sth << "k@binzume.net","asdfg",id; sth->execute(); sth->finish();

// 取り出し sth = dbh->prepare("select * from user;"); if (!sth) cerr << "error: prepare" << endl; sth->execute(); string name,passwd; int uid; while(DBRow row = sth->fetch_row()) { row >> name , passwd , uid; cout << name << "t" << passwd << "t" << uid << endl; } sth->finish();

// 削除 bool ret=dbh->sql("delete from user where mail='k@binzume.net';"); if (!ret) cerr << "error: insert" << endl;

delete dbh; return 0; } }}

**使い方

ヘッダファイルなのでincludeするだけです. 何もたいしたことやってないので,ソースを見てください.

&source{{ sth >> name,passwd,uid; }}

としても読み出せます.「>>」演算子がfetch_row()を兼ねます. 読み出したくない列はNULLにしておいてください(仮).

&source{{ sth << "aaa","bbb",a; }}

とすると,プレースホルダ(?)のデータを指定できます. 参照渡しなので,executeする前に変数の内容を書き換えると, 書き換えた後の値が送信されます. 複数データがあるときは連続してexecuteできます.

***DB

データベース. -connect(str,autocommit) -close() -prepare(sql) STHが返ります -sql(sql) prepare+execute+finish -commit() -rollback()

***DBStmt (STH)

-prepare(sql) DBが呼ぶ -execute() -finish()

***DBRow

-get(var,n) n(1~)番目の列のデータを取り出す.

検索結果の行を入れるためのオブジェクト.

**履歴

-2009-01-23 公開 -2009-01-25 トランザクションとプレースホルダ対応