2012-11-29 64 views
3

我遇到问题,libpq的PQexec函数挂在间歇的 连接上。在环顾邮件列表后,解决方案是使用异步功能PQsendQuery/PQgetResult并实现您自己的超时。libpq - PQsendQuery等待完整结果

现在 问题,我面对的是,直到 返回null,然后你知道它做PQgetResult需要被多次调用。但是,我的 应用程序的其余部分预计每个查询只有一个PQresult对象。

所以我的问题是:

  1. 有没有一种方法来连接/加入多个PQresult S'
  2. 我能以某种方式使用PQisBusy & PQconsumeInput要等到所有的 结果准备好后才致电PQgetResult

回答

4

学分到Laurenz ALBE给谁answered这在PostgreSQL的邮件列表上。

如果您有一条SQL语句,则只会得到一个 PQresult。如果您发送的查询字符串 包含多个语句(例如,

PQsendQuery(conn, "SELECT 42; SELECT 'Hello'"); 

会导致两个PQresults

您只能使用异步 命令处理得到多个PQresults;相应的PQexec将返回 只执行最后语句的PQ结果。

因此,通过丢弃 全部PQresults除了最后一个,您可以获得与PQexec相同的行为。

+0

谢谢跟进 –