PQexec
功能描述
向服务器提交一条命令并等待结果。
原型
PGresult* PQexec(PGconn* conn, const char* query);
参数
| 关键字 | 参数说明 |
|---|---|
| conn | 指向包含连接的对象指针。 |
| query | 需要执行的查询字符串。 |
返回值
PGresult:包含查询结果的对象指针。
注意事项
应该调用PQresultStatus函数来检查任何错误的返回值(包括空指针的值,在这种情况下它将返回PGRES_FATAL_ERROR)。使用PQerrorMessage获取有关错误的更多信息。
命令字符串可以包括多个SQL命令(用分号分隔)。在一个PQexec调用中发送的多个查询是在一个事务里处理的,除非在查询字符串里有明确的BEGIN/COMMIT命令把整个字符串分隔成多个事务。请注意,返回的PGresult结构只描述字符串里执行的最后一条命令的结果,如果有一个命令失败,那么字符串处理的过程就会停止,并且返回的PGresult会描述错误条件。
PQexec函数对普通的同步应用里提交命令已经足够使用。但是它却有几个缺陷,而这些缺陷可能对某些用户很重要。
-
PQexec只能返回一个PGresult结构。如果提交的命令字符串包含多个SQL命令,除了最后一个PGresult以外都会被PQexec丢弃。
-
PQexec总是收集命令的整个结果,将其缓存在一个PGresult中。虽然这为应用简化了错误处理逻辑,但是对于包含多行的结果是不切实际的。
不想受到这些限制的应用可以改用如下函数,也是构造PQexec的函数:
PQsendQuery和PQgetResult。PQsendQueryParams、PQsendPrepare、PQsendQueryPrepared也可以和PQgetResult一起使用。
示例
请参见典型应用开发示例章节。