Chapter 3. libpq - C++ 绑定库

Table of Contents
3.1. 控制和初始化
3.2. libpq++ 类
3.2.1. 联接类:PgConnection
3.2.2. 数据库类:PgDatabase
3.3. 数据库联接函数
3.4. 查询执行函数
3.4.1. 主要的过程
3.4.2. 检索 SELECT 结果信息
3.4.3. 检索 SELECT 结果数值
3.4.4. 检索非-SELECT 结果信息
3.4.5. 处理 COPY 查询
3.5. 异步通知
3.6. 与 COPY 命令向关联的函数

libpq++Postgres 的 C++ API (接口)。 libpq++ 是一个 C++ 类的集合,这些类允许客户端程序与 Postgres 后端服务器进行联接。联接有两种形式:一个数据库类和一个大对象类。

数据库类用于操作数据库,你可以向 Postgres 后端服务器发送任何 SQL 查询并检索服务器的返回。

大对象类用于操作数据库中的大对象。 尽管一个大对象实例可以给 Postgres 后端发送正常的查询,但通常只是用于那些不返回任何数据的简单查询。 一个大对象应该看作一个文件流。以后它应该显得更象 C++ 文件流 cin, coutcerr

本章基于 libpq C 库的文档。 本章的末尾有三个短程序列出来作为 libpq++ 编程的例子(尽管不是很好的编程例子)。 在src/libpq++/examples里有好几个 libpq++ 应用的例子,包括本章的三个例子的源码。

3.1. 控制和初始化

3.1.1. 环境变量

下面的环境变量可以在一个环境里设置缺省值 以避免在应用程序里面把数据库名放到硬代码里:

注意: 请参考 Section 1.9 获取一个可用联接选项的完整列表。

下面的环境变量可以用于选择缺省的联接参数值, 这些值将被PQconnectdbPQsetdbLogin使用 --如果调用代码没有直接声明相应值的话.这些(环境变量) 可以避免把麻烦的数据库名强加入简单的应用程序的硬代码里面。

注意: libpq++ 只使用环境变量或者 PQconnectdb conninfo 风格的字串。

  • PGHOST 设置缺省的服务器名. 如果它以斜扛开头,声明的是 Unix 域套接字通讯,而不是 TCP/IP 通讯;字串值就是套接字文件存放的路径(缺省是 "/tmp").

  • PGPORT 设置与 Postgres 后端通讯的缺省端口号或本地 Unix 主控套接字的文件扩展(文件标识符).

  • PGDATABASE 设置缺省的 Postgres 数据库名.

  • PGUSER 设置用于与数据库联接和用于认证的用户名.

  • PGPASSWORD 如果后端要求口令认证,设置使用的口令.

  • PGREALM 设置与 Postgres 一起使用的 Kerberos 域 如果该域与本地域不同的话。 如果设置了 PGREALMPostgres 应用将试图用这个域(realm)与服务器进行认证并且使用独立的门票文件 (ticket files) 以避免与本地的门票文件冲突. 只有在后端选择了 Kerberos 认证时才使用这个环境变量. (译注:门票文件是 Kerberos认证协议中用于交换密钥的一个文件/服务器。)

  • PGOPTIONSPostgres 后端设置附加的运行时选项.

  • PGTTY 设置后端调试信息显示输出的文件或者控制台(tty).

下面的环境变量可以用于为每个 Postgres 会话声明用户级别的缺省特性:

  • PGDATESTYLE 设置缺省的日期/时间表现形式.

  • PGTZ 设置缺省的时区.

下面的环境变量可以用于为每个 Postgres 会话声明缺省的内部特性:

  • PGGEQO 为基因优化器设置缺省模式.

参阅 SET SQL 命令获取这些环境变量的正确值的信息.