libpq

PostgreSQL 的官方 C 编程语言 API

libpq 是官方的CPostgreSQL 应用程序编程接口,提供一组库函数,使客户端应用程序能够与 PostgreSQL 服务器通信。

其他应用程序接口,如 C++,Perl,Python,Tcl 和 ECPG,以及 psql 等客户端应用程序,都是基于 libpq 并继承其部分行为和环境配置。

历史说明:“pq” in libpq 源自 PostQUEL(参见 PostgreSQL 简史)。

更改历史

尚未完善,正在建设中!

  • PostgreSQL 18
    • 添加函数 PQfullProtocolVersion()(提交 cdb6b0fd
  • PostgreSQL 17
    • 添加以下用于关闭门户和语句的函数(提交 28b57265
      • PQclosePrepared()
      • PQclosePortal()
      • PQsendClosePrepared()
      • PQsendClosePortal()
    • 添加函数 PQchangePassword()(提交 a7be2a6c
    • 添加函数 PQsendPipelineSync()(提交 4794c2d3
    • 添加以下非阻塞查询取消函数(提交 61461a30
      • PQcancelCreate()
      • PQcancelStart()
      • PQcancelPoll()
      • PQcancelReset()
      • PQcancelBlocking()
    • 添加函数 PQsocketPoll()(提交 f5e4dedf
    • 添加函数 PQsetChunkedRowsMod()(提交 4643a2b2
  • PostgreSQL 16
    • 添加连接参数 require_auth(提交 3a465cc6
    • 使用 SOCK_CLOEXECSOCK_NONBLOCK(如果可用)(提交 bfc9497e
    • 添加连接参数 sslcertmode(提交 36f40ce2
    • 添加连接参数 load_balance_hosts,提供对连接负载均衡的支持(提交 7f5b1981
  • PostgreSQL 15
    • 添加对服务器主题备用名称中的 IPv4 和 IPv6 地址的支持(提交 c1932e54)
    • PQcancel() 现在使用 PGconntcp_user_timeouttcp_keepalives_{count|idle|interval} 设置(提交 5987feb7
    • PQsslAttribute(NULL, "library") 返回正在使用的 SSL 库的名称,无需连接句柄(提交 ebc8b7d4
  • PostgreSQL 14
    • in_hot_standby 现在由 PQparameterStatus() 报告(提交 bf8a662c
    • 添加管道模式(提交 acb7e4eb
    • PQtrace() 输出格式改进(提交 198b3716
    • target_session_attrs 中添加选项 read-onlyprimarystandbyprefer-standby(提交 ee28cacf
    • 默认情况下为 SSL 连接设置服务器名称指示 (SNI)(提交 5c55dc8b
    • 删除已弃用的连接参数 authtypetty(提交 14d9b376
  • PostgreSQL 13
    • 添加连接参数 ssl_min_protocol_versionssl_min_protocol_version(初始提交 ff8ca5fa
  • PostgreSQL 12
    • 在函数 PQsetErrorVerbosity() 中添加详细程度级别 SQLSTATE(提交 7bac3aca
  • PostgreSQL 10
  • PostgreSQL 9.4
    • 添加函数 PQhostaddr()(提交 9f80f483
    • 函数 PQconndefaults() 现在忽略无效的服务文件(提交 9e0a97f1
    • 添加对超出 TLSv1 的 TLS 协议版本的支持(提交 820f08ca
  • PostgreSQL 9.3
    • 添加函数 PQconninfo()(提交 65c3bf19
  • PostgreSQL 9.2
    • 添加函数 PQsetSingleRowMode()(提交 ea56ed9a
  • PostgreSQL 9.1
    • 添加连接参数 client_encoding(提交 02e14562
    • 添加连接参数 requirepeer(初始提交 040aee29
    • 添加函数 PQlibVersion()(提交 de9a4c27
  • PostgreSQL 9.0
  • PostgreSQL 8.4
    • 添加连接参数 sslmodeverify-caverify-full(提交 e883d0b5
    • 添加对通配符服务器证书的支持(初始提交 cb10467d
    • 现在可以指定客户端证书的文件位置(提交 5f3724dd
    • 当没有数据库连接保持打开状态时,OpenSSL 回调将被注销(提交 4e816286
    • 添加 PQinitOpenSSL() 函数(提交 97503a52)
    • 添加 lo_import_with_oid() 函数(提交 8436f9a0
  • PostgreSQL 8.0
    • 新增 PQcancel() 函数 (提交 44e8a968)
    • 新增 PQprepare()/PQsendPrepared() 函数 (提交 9d9cfb1a)
    • 新增 PQserverVersion() 函数 (提交 f79fbb2b)
  • 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/ 目录中找到。

分类

应用程序接口

反馈

请在此处提交关于 "libpq" 的任何评论、建议或更正 此处