db.h (ODBC)

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

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

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

注意

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

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

サンプル

#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

データベース.

DBStmt (STH)

DBRow

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

履歴

Copyright © binzume all rights reserved.