db.h (ODBC)
C++でODBCを使ってデータベースにアクセスするヘッダファイル.
PerlのDBIにインターフェイスを似せてあります.
利用の制限はありません.個人の責任において自由に使ってください.
注意
ODBCを試すときに動作確認のために書いたものなので,まだ完成度が低いです.
オーバーロードがいいかげんなので,データの出し入れには,std::string,int,longの変数以外は使わないようにしてください.
サンプル
- VC++: 普通にコンパイル
- gcc: g++ dbtest.cpp -lodbc
#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するだけです.何もたいしたことやってないので,ソースを見てください.
sth >> name,passwd,uid;
としても読み出せます.「>>」演算子がfetch_row()を兼ねます.読み出したくない列はNULLにしておいてください(仮).
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 トランザクションとプレースホルダ対応
Copyright © binzume all rights reserved.