*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 トランザクションとプレースホルダ対応