libpq - PQsendQuery等待完整的结果

时间:2012-11-29 15:36:55

标签: c postgresql asynchronous libpq

我遇到的问题是libpq的PQexec函数断断续续 连接。浏览邮件列表后,解决方案是使用 异步函数PQsendQuery / PQgetResult并实现自己的超时。

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

所以我的问题是:

  1. 有没有办法连接/加入多个PQresult s?
  2. 我可以以某种方式使用PQisBusy& PQconsumeInput要等到所有人 在调用PQgetResult
  3. 之前,结果已准备就绪

1 个答案:

答案 0 :(得分:5)

学分到Laurenz Albe,在postgresql邮件列表中answered结束了这一点。

如果您有一个SQL语句,则只能获得一个 PQresult。如果发送查询字符串,则会获得多个 有多个陈述,例如

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

会产生两个PQresults

您只能使用异步获得多个PQresults 命令处理;相应的PQexec将返回 只执行 last 语句的PQresult。

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