[pgsql-jp: 35469] lobpqxxの使用方法

堀越 弘幸 horikosi @ tcs-ipnet.co.jp
2005年 6月 10日 (金) 10:55:45 JST


ホリエモンと申します。

C++にてPostgreSQLにアクセスするために、libpqxxクラス(2.5.3)を使用する
つもりでいますが、C++もPostgreSQLも初心者のため、基本的なDB操作方法(DB
コネクト、DML実行、トランザクション制御)の方法が分かりません。
サンプルソースや参考HPなどを参照していますが、ほぼ英語のものしかないため、
かなり苦戦しております(特にトランザクション制御について・・・)。

具体的には下記のようなソースをコンパイルして実行したところ、

Connected to test
Attempt to execute query in committed transaction<READ COMMITTED>

とプロンプトに出力されて終了してしまいます。このソースに何か足りない記述
があるのでしょうか?ちなみに、“W.commit();”の行をコメントアウトして実
行すると、検索結果と“ok.”が表示されて正常に終了します。

どなたか基本的なDB操作を実行する方法を知っている方がいらっしゃいましたら、
ご教授願います。

宜しくお願いします。

----------
#include <iostream>
#include <pqxx/pqxx>

#include <pqxx/connection>

using namespace std;
using namespace pqxx;

int main()
{
  try
  {
    connection C("dbname=test user=xxxx password=xxxx");

    cout << "Connected to test" << endl;
    work W(C);

    W.exec("INSERT INTO test(test) VALUES ('H')");
    W.commit();

    result R = W.exec("SELECT test FROM test");

    cout << "Found " << R.size() << "data:" << endl;
    for (result::const_iterator r = R.begin();
         r != R.end();
         ++r)
    {
      cout << r[0].c_str() << endl;
    }

    cout << "ok." << endl;
  }
  catch (const exception &e)
  {
    cerr << e.what() << endl;
    return 1;
  }
  return 0;
}
----------





pgsql-jp メーリングリストの案内