问题标签 [libpqxx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在 MinGW 中链接 libpqxx?
我正在编写一个 C++ 程序,我想使用 libpqxx 在 MinGW 中查询 PostgreSQL 数据库。这是我第一次使用 MinGW,所以我完全不知道如何做到这一点。我还下载了 MSYS 并按照我找到的任何说明进行操作,但我不知道如何进行这项工作。如果有人能给我一步一步的指南,我将不胜感激。
编辑:我知道我问的太多了,所以我会改写我的问题。对于使用 libpq(在 Windows 上)编译 libpqxx 的部分,我需要建议。我只是认为有一个完整的指南会有所帮助,以防我在这部分之前做错了什么。
c++ - cout 和 sleep 导致不同的结果
我有一个接受用户输入(用户名/密码)的类,bcrypt 对输入密码进行哈希处理以检查它是否与存储在数据库中的哈希匹配,然后如果成功则将用户登录。我遇到的问题是,如果我调用 cout << "\n"
或 sleep(1)
在散列之前,密码检查按预期工作,但如果我注释掉sleep
and cout
,散列器总是失败,这导致用户收到不正确的invalid credentials
消息。
我正在使用pqxx读取数据库,并使用rg3 的 bcrypt来散列/检查密码。
我第一次发现问题的代码片段:
代码checkPassword()
:
第一个代码片段中的字符串inputPass
不会作为其他线程的引用传递;它被复制了。
c++ - 使用 pqxx 将数据插入 postgres 的最快方法是什么
我用作从 c++ 代码pqxx
访问的 api 。postgres
我正在尝试插入大量数据,但发现性能不够好。我已经尝试了几件事,但没有什么能提供我需要的性能。
我一直在尝试使用pqxx::pipeline
异步插入,但它与此接缝,我可以等到所有插入结束来提交事务,在这种情况下,如果该过程我冒着丢失大量数据的风险在提交之前崩溃。或者我可以偶尔提交(比如每 5 分钟一次),在这种情况下,我每 5 分钟就会有一个阻塞调用,这需要相当长的时间。
有没有办法在没有事务的情况下做到这一点,或者对我的事务进行异步提交?
c++ - 处理连接对象时出现分段错误
我有一堆方法:
调用断开连接或类析构函数时,会导致分段错误。(当我注释掉下面的断开连接部分时,它会在调用析构函数时发生。)
c++ - libpqxx 事务序列化和后果
对于我的实现,必须批量完成特定的写入,并且没有其他干扰的机会。
有人告诉我,以这种方式进行的两个竞争事务将导致第一个事务阻塞第二个事务,而第二个事务可能会在第一个事务完成后完成,也可能不会完成。
请发布确认这一点的文档。此外,如果第一个事务阻塞,第二个事务究竟会发生什么?它会排队、失败还是某种组合?
如果无法确认,是否应该将此事务的事务隔离级别设置为SERIALIZABLE
?如果是这样,如何使用 libpqxx 准备好的语句来完成?
如果事务是序列化的,第二个事务会失败还是排队直到第一个事务完成?
如果任一失败,如何使用 libpqxx 检测到?
c++ - 结果,例如返回,来自未提交的高管?
使用 libpqxx,是否可以将一个已准备好exec
但尚未经过测试的准备好的语句commit
存储在 a 中result
以供以后准备好的语句中使用?
如果是这样,如何做到这一点?
代码
为了便于阅读,我已将其剥离,但这基本上是我想要做的:
return
检查from以write_parent_table
查看if( == "")
. 如果不是,则继续;否则,我会commit
让它失败,或者如果可能的话,最好取消交易;但是,如果可能的话,我还不知道该怎么做。
per中总会有不确定的INSERT
s数量。child_table
parent_table
INSERT
c++ - 将 PostgreSQL 与 G-WAN 一起使用
我尝试将 libpxx 与 G-WAN 4.3.14 一起使用,这是我的原始源代码:
当我尝试正常编译时它工作正常:
但是当我取消注释//#define USE_GWAN
并在 G-WAN 上尝试时,它显示:
更新:关闭 G-WAN 并再次运行时出现不同的错误:
所有库都已正确安装
我应该添加什么以将 libpqxx 与 G-WAN 一起使用?
c++ - 执行 INSERT 到数据库获取插入行的 id 后如何获取?
我正在使用 c++11 和 pqxx 访问 postgresql 数据库,如果成功与否,我需要插入行的 id 和标志。执行 INSERT 到数据库获取插入行的 id 后如何获取?我试图在网上找到例子但没有成功。
c++ - C++、Postgres、libpqxx 巨大的查询
我必须通过以下代码对 Postgres 执行 SQL 查询。该查询返回大量行(40M 或更多)并具有 4 个整数字段:当我使用 32Gb 的工作站时,一切正常,但在 16Gb 的工作站上,查询非常慢(我猜是由于交换)。有没有办法告诉 C++ 批量加载行,而无需等待整个数据集?由于可能更好的 JDBC 驱动程序,使用 Java 之前我从未遇到过这些问题。
我正在使用 PostgreSQL 9.3,在那里我看到了这个http://www.postgresql.org/docs/9.3/static/libpq-single-row-mode.html,但我不知道如何在我的 C++ 代码上使用它。您的帮助将不胜感激。
编辑:这个查询只运行一次,用于创建必要的主内存数据结构。因此, tt 无法优化。此外,pgAdminIII 可以在同一台(或使用更小的 RAM)PC 上在一分钟内轻松获取这些行。此外,Java 可以轻松处理两倍的行数(使用 Statent.setFetchSize() http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#setFetchSize%28int%29)因此,这确实是 libpqxx 库的问题,而不是应用程序问题。有没有办法在 C++ 中强制执行此功能,而无需手动显式设置限制/偏移量?
c++ - c_str == string vs c_str == c_str 的值相等
我正在尝试比较 libpqxxc_str
值。
例如,如果我尝试直接比较它们,当它们具有相同的字符串值时result1[0][0].c_str() == result2[0][0].c_str()
,它们就不会。return true
正确比较它们的唯一方法是使用strcmp
.
但是,如果我将 a libpqxxc_str
与 astd::string
进行比较strcmp
,编译器会抱怨 a 的参数strcmp
不能是 a std::string
,但对我来说最奇怪的是:如果我比较类似的东西,如果它们具有相同的值,则result1[0][0].c_str() == some_std_string
比较将,否则。return true
false
为什么是这样?这是 libpqxx 特有的东西吗?如果不是,这是标准行为吗?