PostgreSQLのC言語用ライブラリはlibpqで、C++用のライブラリはPostgreSQL7.3からlibpqxx、それ以前はlibpq++という名前だったようです。libpqは割とドキュメントやサンプルが豊富ですが、libpqxxはPostgreSQLのドキュメントからは分離しておりサンプルが少なかったので使ったときのメモ。
ダウンロードはlibpqxxのサイトから。インストールは解凍して./configure, make, make installで問題なし。PostgreSQLは8.1.4、libpqxxは2.6.8。
libpqxxのチュートリアルには動くコードが見当たらず、ソースの中のtest/test000.cxxなどがサンプルになる。
コンパイルがそのままでは通らなかったので以下のコマンドを打つことになりました。
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig $ pkg-config --libs libpqxx
コンパイルは以下のように。
$ g++ -Wall test.cpp -lpqxx -lpq
test.cppの中身。
#include <iostream>
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main()
{
try {
connection Conn("dbname=test");
work T(Conn);
result R(T.exec("select * from test"));
for (result::const_iterator c = R.begin(); c != R.end(); ++c) {
cout << c[0].as(string()) << endl;
}
T.commit();
Conn.disconnect();
} catch (const exception &e) {
cerr << e.what() << endl;
return 1;
}
return 0;
}