- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将通过 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 显式关闭结果和准备好的语句以避免内存泄漏?提前致谢
最佳答案
事务和结果对象在删除时会自动清除,这意味着它们在超出范围时会被清除。
因此您的代码不会泄漏内存,但它并不完美:
r
变量 - 最好在 try
block 中声明结果对象,这样它会在不需要时立即被清除;try
block 中调用 C.disconnect()
- 最好只允许 C
超出范围。在 C++ 中,您不应该在所需的最小范围之外声明变量 - 让编译器为您优化它。
关于c++ - libpqxx 关闭准备好的语句和结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562515/
我正在处理我的 C++ 简单项目,我在 CMakelists.txt 中遇到了一个关键问题,我无法以错误的方式链接 libpqxx 库,我花了两天时间解决了这个问题。 我正在使用 C++ 2017,
要在 PostgreSQL 中插入批量数据/填充数据库,最快的方法是使用 COPY。 Source 我必须填充一个数据库。现在,我的写入速度低至每秒 100-200。这涉及通过 C++ 库 libpq
是否可以执行包含多个查询的一个事务,例如在表 1 中插入 smth 并在表 2 中插入 smth?我该如何实现?我使用 libpqxx 与数据库进行交互,并期待与此相关的答案。谢谢。 最佳答案 pqx
对于我的实现,特定的写入必须批量完成并且没有其他干扰的机会。 我已经told以这种方式进行的两个竞争事务将导致第一个阻塞第二个,第二个可能会在第一个完成后完成,也可能不会完成。 请发布确认这一点的文档
我将通过 libpqxx 和 C++ 创建到 Postgresql 数据库的连接,然后执行几个准备好的语句,返回结果(我将循环遍历它们)。我来自 Java 背景,过程是: 打开数据库连接 准备报表 调
我正在尝试使用 libpqxx 库开发一个非常简单直接的连接池。我是 c++ 的新手,对指针和引用仍然很困惑。该类的行为非常简单:有一个带有一些初始化连接的 vector ,并在需要时将连接弹出和推送
所以我有以下问题: g++ -std=c++0x -O3 -I/usr/include/scip main.cpp locations/locationreader.cpp locations/loc
我正在使用 libpqxx 从数据库中获取一行并将 pqxx::row 中的字段分配给专门设计用于保存这些值的结构: struct driveOperationRecord { long in
我正在尝试编译 libpqxx 代码示例: #include #include int main(int, char *argv[]) { pqxx::connection c("dbname
如何使用 libpqxx 从数组中获取值?例如我有这样的表: CREATE TABLE testTable ( testArray integer[] ); 如何在 C++ 中获取具有这些值的 in
最近我编写了一个通过 libpqxx 访问 Postgres 数据库的应用程序,它严重泄漏了内存。即使是这个基于 http://pqxx.org/devprojects/libpqxx/doc/4.0
我正在尝试使用 libpqxx 来监听通知事件.我从一个扩展 pqxx::notify_listener 的例子开始。 #include #include #include class Foo
我在我的项目中使用 libpqxx。项目比较具体,不知道会执行什么SQL语句。让我们说用户输入语句: SELECT * FROM table1 执行该语句我得到结果记录并且我可以遍历它。 for( a
我正在编写一个 C++ 客户端程序,通过互联网查询 postgreSQL 数据库。我想在等待答案时处理事件,发生网络连接问题,因此客户端无法从数据库服务器接收任何消息。但是当我手动关闭互联网连接时,即
我必须通过以下代码对 Postgres 执行 SQL 查询。查询返回大量行(40M 或更多)并有 4 个整数字段:当我使用 32Gb 的工作站时,一切正常,但在 16Gb 的工作站上,查询非常慢(我猜
我需要使用 libpqxx 将大量数据(大约 7.000.000 个条目)批量加载到 PostgreSQL 数据库中.我已阅读有关 how to populate the database 的文档,但
我有一个非常简单的例子,但无法正确构建它,我使用了下一个参数: g++ -lpq -libpqxx -Wall -o "pg" "pg.cpp" (in dir: /home/user) /usr/l
我有一个使用 libpqxx 的 MFC 项目。所有设置均为默认设置。 Release模式如我所料正常工作。但是当我切换到 Debug模式时,它显示异常并显示调试断言: 最有趣的是,如果我使用 Sha
我刚刚开始为 PostgreSQL 数据库实现一些客户端软件。 查询将允许来自不受信任来源的输入参数。因此,我需要在实际提交之前清理我的交易。 至于 libpq,我找到了 PQescapeString
我想尽快在 postgres 表中插入许多参数。 现在我浪费了太多时间来一个一个地绑定(bind)参数。代码看起来几乎像这样: pqxx::connection my_connection(c_str
我是一名优秀的程序员,十分优秀!