libpq

PostgreSQL 的官方 C 语言 API

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
  • PostgreSQL 16
    • 添加了连接参数 require_auth(提交 3a465cc6
    • 在可用时使用 SOCK_CLOEXECSOCK_NONBLOCK(提交 bfc9497e
    • 添加了连接参数 sslcertmode(提交 commit|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" 的任何评论、建议或更正 此处