libpq
是官方的C应用程序编程接口,用于 PostgreSQL,提供了一组库函数,使客户端应用程序能够与 PostgreSQL 服务器通信。
其他应用程序接口,如 C++、Perl、Python、Tcl 和 ECPG,以及诸如 psql 的客户端应用程序,都基于 libpq
并继承其某些行为和环境配置。
历史说明:“pq
” 在 libpq
中源自 PostQUEL(参见 PostgreSQL 简史)。
更改历史记录
不完整,正在开发中!
- PostgreSQL 17
- 添加了以下用于关闭门户和语句的函数(提交 28b57265)
PQclosePrepared()
PQclosePortal()
PQsendClosePrepared()
PQsendClosePortal()
- 添加了函数
PQchangePassword()
(提交 a7be2a6c) - 添加了函数
PQsendPipelineSync()
(提交 4794c2d3) - 添加了以下非阻塞查询取消函数(提交 61461a30)
PQcancelCreate()
PQcancelStart()
PQcancelPoll()
PQcancelReset()
PQcancelBlocking()
- 添加了函数
PQsocketPoll()
(提交 f5e4dedf)
- 添加了函数
PQsetChunkedRowsMod()
(提交 4643a2b2)
- 添加了以下用于关闭门户和语句的函数(提交 28b57265)
- PostgreSQL 16
- PostgreSQL 15
- PostgreSQL 14
in_hot_standby
现在由PQparameterStatus()
报告(提交 bf8a662c)- 添加了管道模式(提交 acb7e4eb)
PQtrace()
输出格式改进(提交 198b3716)- 在
target_session_attrs
中添加了选项read-only
、primary
、standby
和prefer-standby
(提交 ee28cacf) - 对于 SSL 连接,默认情况下设置服务器名称指示 (SNI)(提交 5c55dc8b)
- 删除了已弃用的连接参数
authtype
和tty
(提交 14d9b376)
- PostgreSQL 13
- 添加了连接参数
ssl_min_protocol_version
和ssl_min_protocol_version
(初始提交 ff8ca5fa)
- 添加了连接参数
- PostgreSQL 12
- 在函数
PQsetErrorVerbosity()
中添加了详细程度级别SQLSTATE
(提交 7bac3aca)
- 在函数
- PostgreSQL 10
- 添加了连接参数
passfile
(提交 ba005f19) - 添加了连接参数
target_session_attrs
(提交 721f7bd3) - 添加了函数
PQencryptPasswordConn()
(提交 8f8b9be5)
- 添加了连接参数
- PostgreSQL 9.4
- PostgreSQL 9.3
- 添加了函数
PQconninfo()
(提交 65c3bf19)
- 添加了函数
- PostgreSQL 9.2
- 添加了函数
PQsetSingleRowMode()
(提交 ea56ed9a)
- 添加了函数
- PostgreSQL 9.1
- PostgreSQL 9.0
- 添加了连接参数
application_name
(提交 3dfcf8cc)
- 添加了连接参数
- PostgreSQL 8.4
- PostgreSQL 8.0
- PostgreSQL 6.4
- 添加了连接参数
client_encoding
(提交 cb7cbc16)
- 添加了连接参数
示例
以下示例代码演示了如何使用 libpq
连接到 PostgreSQL 服务器并执行简单的查询 - “SELECT 'hello world'
” - 并显示输出。
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
static void exit_nicely(PGconn *conn) { PQfinish(conn); exit(1); } int main(int argc, char **argv) { const char *conninfo; PGconn *conn; PGresult *res; if (argc > 1) conninfo = argv[1]; else conninfo = "dbname=postgres"; /* Connect to the database */ conn = PQconnectdb(conninfo); /* Verify success of database connection */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn)); exit_nicely(conn); } /* Execute a simple query and display the results */ res = PQexec(conn, "SELECT 'Hello World'"); printf("%s\n", PQgetvalue(res, 0, 0)); PQclear(res); /* close the connection to the database and cleanup */ PQfinish(conn); return 0; }
更多示例可以在 PostgreSQL 手册 和 PostgreSQL 源代码分发版中的目录 src/test/examples/
中找到。
参考文献
- PostgreSQL 文档: libpq - C 库
- PostgreSQL 文档: libpq 环境变量