第五十四章. libpq - C++ 绑定库

内容
控制和初始化
libpq++ 类
数据库联接函数
查询执行函数
异步通知
F与 COPY 命令Command
libpq++ 是 Postgres 的 C++ API (接口)。libpq++ 是一个 C++ 类的集合,这些类允许客户端程序与 Postgres 后端服务器进行联接。联接有两种形式:一个数据库类和一个大对象类。

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

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

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

控制和初始化

环境变量

下面的环境变量可以在一个环境里设置缺省值以避免在应用程序里面把数据库名放到硬代码里:
 
注意:请参考 libpq - C 库 获取一个可用联接选项的完整列表。
下面的环境变量可以用于选择缺省的联接参数值,这些值将被 PQconnectdb 或 PQsetdbLogin 使用--如果调用代码没有直接声明相应值的话.这些(环境变量)可以避免把麻烦的数据库名强加入简单的应用程序的硬代码里面。
    注意:libpq++ 只使用环境变量或者 PQconnectdb conninfo 风格的字串。
    PGHOST 设置缺省的服务器名.如果声明了一个非零长的字符串,将使用 TCP/IP 通讯.如果没有主机名,libpq 将使用本地的Unix 域套接字.

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

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

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

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

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

    PGOPTIONS 为 Postgres 设置附加的运行时选项.

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

下面的环境变量可以用于为每个 Postgres 会话声明用户级别的缺省特性:
    PGDATESTYLE 设置缺省的日期/时间表现形式.

    PGTZ 设置缺省的时区.

下面的环境变量可以用于为每个 Postgres 会话声明缺省的内部特性:
    PGGEQO 为基因优化器设置缺省模式.