libpqxx と C++ を介して Postgresql データベースへの接続を作成し、いくつかの準備済みステートメントを実行して、結果を返します (そして、それらをループします)。私はJavaのバックグラウンドを持っており、プロセスは次のとおりです。
- データベース接続を開く
- 声明を準備する
- 準備済みステートメントのパラメーターを調整する
- ステートメントを実行する
- 結果セットをループする
- 結果セットを閉じる
- 準備されたステートメントを閉じる
- データベース接続を閉じる
1~5と8のサンプルコードはあるのですが、結果オブジェクトと準備文オブジェクトを閉じる方法がわかりません
サンプルコード:
connection C("dbname=mydbname user=postgres password=mypass hostaddr=127.0.0.1 port=5432");
string tableName("mydbtable");
if (C.is_open()) {
cout << "We are connected to " << C.dbname() << endl;
} else {
cout << "We are not connected!" << endl;
}
result r;
try {
const std::string sql =
"SELECT * FROM " + tableName + " WHERE sn_autoinc10 = $1";
C.prepare("find", sql);
//C.prepare("findtable", ) ("integer");
work W(C);
r = W.prepared("find")(0).exec();
for (int rownum = 0; rownum < r.size(); ++rownum) {
const result::tuple row = r[rownum];
for (int colnum = 0; colnum < row.size(); ++colnum) {
const result::field myField = row[colnum];
std::cout << myField.c_str() << ' ';
}
std::cout << std::endl;
}
C.disconnect();
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
}
メモリ リークを回避するために、c++ と libpqxx を使用して結果と準備済みステートメントを明示的に閉じる必要がありますか? 前もって感謝します