PostgreSQL7.0手册-接口-54. libpq - C++ 绑定库
第五十四章. libpq - C++ 绑定库
内容
控制和初始化
libpq++ 类
数据库联接函数
查询执行函数
异步通知
F与 COPY 命令Command
libpq++ 是 Postgres 的 C++ API (接口)。libpq++ 是一个 C++ 类的集合,这些类允许客户端程序与 Postgres 后端服务器进行联接。联接有两种形式:一个数据库类和一个大对象类。
数据库类用于操作数据库,你可以向 Postgres 后端服务器发送任何 SQL 查询并检索服务器的返回。
大对象类用于操作数据库中的大对象。尽管一个大对象实例可以给Postgres 后端发送正常的查询,但通常只是用于那些不返回任何数据的简单查询。一个大对象应该看作一个文件流。以后它应该显得更象 C++ 文件流 cin,cout 和 cerr。
本章基于 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 --如果该域与本地域不同的话。如果设置了 PGREALM,Postgres 应用将试图用这个域(realm)与服务器进行认证并且使用独立的门票文件(ticket files)以避免与本地的门票文件冲突.只有在后端选择了 Kerberos 认证时才使用这个环境变量.(译注:门票文件是 Kerberos 认证协议中用于交换密钥的一个文件/服务器。)
PGOPTIONS 为 Postgres 设置附加的运行时选项.
PGTTY 设置后端调试信息显示输出的文件或者控制台(tty).
下面的环境变量可以用于为每个 Postgres 会话声明用户级别的缺省特性:
PGDATESTYLE 设置缺省的日期/时间表现形式.
PGTZ 设置缺省的时区.
下面的环境变量可以用于为每个 Postgres 会话声明缺省的内部特性:
PGGEQO 为基因优化器设置缺省模式.
参阅 SET SQL 命令获取这些环境变量的正确值的信息.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
libpq++ 类
联接类:PgConnection
联接类与数据库进行实际的联接,被所有的访问类继承。
数据库类:PgDatabase
数据库类提供与一个服务器后端已联接的 C++ 对象。要创建这样的一个对象,我们首先需要用于访问后端的环境。下面的构造器处理从 C++ 程序里面访问后端服务器的工作。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
数据库联接函数
PgConnection 与一个后端服务器建议一个新联接。
PgConnection::PgConnection(const char *conninfo)
尽管典型的是从一个访问类里面调用(此函数),与后端服务器的联接很有可能是通过创建一个 PgConnection 对象实现的。
ConnectionBad 返回与一个后端服务器的联接是否成功。
int PgConnection::ConnectionBad()
如果联接失败返回 TRUE (真)。
Status 返回与一个后端服务器的联接的状态。
ConnStatusType PgConnection::Status()
取决于联接的状态,返回 CONNECTION_OK 或 CONNECTION_BAD。
PgDatabase 与后端服务器建立一个新联接。
PgDatabase(const char *conninfo)
在创建一个 PgDatabase 后,我们在向对象发送查询前要通过检查来验证与数据库的联接是否成功。这一点很容易通过使用 Status 或 ConnectionBad 方法检索 PgDatabase 对象当前的状态来实现。
DBName 返回当前数据库的名称。
const char *PgConnection::DBName()
Notifies 返回一个从后端收到的未处理通知信息列表里的下一条通知。
PGnotify* PgConnection::Notifies()
参阅 PQnotifies() 获取细节。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
查询执行函数
Exec 向后端服务器发送一个查询。可能我们更愿意使用下面两个函数之一。
ExecStatusType PgConnection::Exec(const char* query)
返回查询的结果。可能的状态结果可以是下面的值:
PGRES_EMPTY_QUERY
PGRES_COMMAND_OK,如果查询是一条命令
PGRES_TUPLES_OK,如果查询成功返回记录
PGRES_COPY_OUT
PGRES_COPY_IN
PGRES_BAD_RESPONSE,如收到一个未知的响应
PGRES_NONFATAL_ERROR
PGRES_FATAL_ERROR
ExecCommandOk 向后端服务器发送一条命令查询。
int PgConnection::ExecCommandOk(const char *query)
如果命令查询成功返回 TRUE。
ExecTuplesOk 向后端服务器发送一条命令查询。
int PgConnection::ExecTuplesOk(const char *query)
如果命令查询成功返回 TRUE。
ErrorMessage 返回最后
内容
控制和初始化
libpq++ 类
数据库联接函数
查询执行函数
异步通知
F与 COPY 命令Command
libpq++ 是 Postgres 的 C++ API (接口)。libpq++ 是一个 C++ 类的集合,这些类允许客户端程序与 Postgres 后端服务器进行联接。联接有两种形式:一个数据库类和一个大对象类。
数据库类用于操作数据库,你可以向 Postgres 后端服务器发送任何 SQL 查询并检索服务器的返回。
大对象类用于操作数据库中的大对象。尽管一个大对象实例可以给Postgres 后端发送正常的查询,但通常只是用于那些不返回任何数据的简单查询。一个大对象应该看作一个文件流。以后它应该显得更象 C++ 文件流 cin,cout 和 cerr。
本章基于 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 --如果该域与本地域不同的话。如果设置了 PGREALM,Postgres 应用将试图用这个域(realm)与服务器进行认证并且使用独立的门票文件(ticket files)以避免与本地的门票文件冲突.只有在后端选择了 Kerberos 认证时才使用这个环境变量.(译注:门票文件是 Kerberos 认证协议中用于交换密钥的一个文件/服务器。)
PGOPTIONS 为 Postgres 设置附加的运行时选项.
PGTTY 设置后端调试信息显示输出的文件或者控制台(tty).
下面的环境变量可以用于为每个 Postgres 会话声明用户级别的缺省特性:
PGDATESTYLE 设置缺省的日期/时间表现形式.
PGTZ 设置缺省的时区.
下面的环境变量可以用于为每个 Postgres 会话声明缺省的内部特性:
PGGEQO 为基因优化器设置缺省模式.
参阅 SET SQL 命令获取这些环境变量的正确值的信息.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
libpq++ 类
联接类:PgConnection
联接类与数据库进行实际的联接,被所有的访问类继承。
数据库类:PgDatabase
数据库类提供与一个服务器后端已联接的 C++ 对象。要创建这样的一个对象,我们首先需要用于访问后端的环境。下面的构造器处理从 C++ 程序里面访问后端服务器的工作。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
数据库联接函数
PgConnection 与一个后端服务器建议一个新联接。
PgConnection::PgConnection(const char *conninfo)
尽管典型的是从一个访问类里面调用(此函数),与后端服务器的联接很有可能是通过创建一个 PgConnection 对象实现的。
ConnectionBad 返回与一个后端服务器的联接是否成功。
int PgConnection::ConnectionBad()
如果联接失败返回 TRUE (真)。
Status 返回与一个后端服务器的联接的状态。
ConnStatusType PgConnection::Status()
取决于联接的状态,返回 CONNECTION_OK 或 CONNECTION_BAD。
PgDatabase 与后端服务器建立一个新联接。
PgDatabase(const char *conninfo)
在创建一个 PgDatabase 后,我们在向对象发送查询前要通过检查来验证与数据库的联接是否成功。这一点很容易通过使用 Status 或 ConnectionBad 方法检索 PgDatabase 对象当前的状态来实现。
DBName 返回当前数据库的名称。
const char *PgConnection::DBName()
Notifies 返回一个从后端收到的未处理通知信息列表里的下一条通知。
PGnotify* PgConnection::Notifies()
参阅 PQnotifies() 获取细节。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
查询执行函数
Exec 向后端服务器发送一个查询。可能我们更愿意使用下面两个函数之一。
ExecStatusType PgConnection::Exec(const char* query)
返回查询的结果。可能的状态结果可以是下面的值:
PGRES_EMPTY_QUERY
PGRES_COMMAND_OK,如果查询是一条命令
PGRES_TUPLES_OK,如果查询成功返回记录
PGRES_COPY_OUT
PGRES_COPY_IN
PGRES_BAD_RESPONSE,如收到一个未知的响应
PGRES_NONFATAL_ERROR
PGRES_FATAL_ERROR
ExecCommandOk 向后端服务器发送一条命令查询。
int PgConnection::ExecCommandOk(const char *query)
如果命令查询成功返回 TRUE。
ExecTuplesOk 向后端服务器发送一条命令查询。
int PgConnection::ExecTuplesOk(const char *query)
如果命令查询成功返回 TRUE。
ErrorMessage 返回最后
Tags:PostgreSQL,手册,接口,libpq,++

