我将通过 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 显式关闭结果和准备好的语句以避免内存泄漏?提前致谢