我遇到的问题是libpq的PQexec
函数断断续续
连接。浏览邮件列表后,解决方案是使用
异步函数PQsendQuery
/ PQgetResult
并实现自己的超时。
现在
我面临的问题是PQgetResult
需要被多次调用,直到
它返回null
,然后你知道它已经完成了。但是,我的其余部分
应用程序需要每个查询一个PQresult
个对象。
所以我的问题是:
PQresult
s?PQisBusy
& PQconsumeInput
要等到所有人
在调用PQgetResult
?答案 0 :(得分:5)
学分到Laurenz Albe,在postgresql邮件列表中answered结束了这一点。
如果您有一个SQL语句,则只能获得一个
PQresult
。如果发送查询字符串,则会获得多个
有多个陈述,例如
PQsendQuery(conn, "SELECT 42; SELECT 'Hello'");
会产生两个PQresults
。
您只能使用异步获得多个PQresults
命令处理;相应的PQexec将返回
只执行 last 语句的PQresult。
因此,您可以通过丢弃获得与PQexec
相同的行为
所有PQresults
除了最后一个。