31.10. 控制函数
这些函数控制许多libpq其他行为的细节。
PQclientEncoding
返回客户端编码。
int PQclientEncoding(const PGconn *_conn_);
请注意,它返回编码ID,而不是一个符号串如EUC_JP
。 转换编码的ID为一个编码名称,你可以使用:
char *pg_encoding_to_char(int _encoding_id_);
PQsetClientEncoding
设置客户端编码。
int PQsetClientEncoding(PGconn *_conn_, const char *_encoding_);
_conn_
是一个到服务器的连接,_encoding_
是你想要的编码使用。如果函数成功设置编码,则返回0,否则返回-1。 这个链接的当前编码可以通过PQclientEncoding
确定。
PQsetErrorVerbosity
决定PQerrorMessage
和PQresultErrorMessage
返回的信息的冗余程度。
typedef enum
{
PQERRORS_TERSE,
PQERRORS_DEFAULT,
PQERRORS_VERBOSE
} PGVerbosity;
PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
PQsetErrorVerbosity
设置冗余模式,返回连接的前一个设置。在TERSE模式下, 返回的消息只包括严重性,主信息,以及位置信息;这些东西通常只有一行。 缺省模式生成的消息包括上面的信息加上任何细节,提示,或者环境字段(这些可能跨越几行)。 VERBOSE模式包括所有可以获得的字段。修改冗余模式不会影响我们从已经存在 PGresult
对象中获取的信息,只有随后创建的PGresult
对象才受到影响。
PQtrace
打开对前端/服务器通讯的跟踪,把调试信息输出到一个文件流里。
void PQtrace(PGconn *conn, FILE *stream);
Note: 在Windows上,如果libpq库和应用使用了不同的标志编译, 那么这个函数调用会导致应用崩溃,因为
FILE
指针的内部表现形式是不一样的。 特别是多线程/单线程,发布/调试,以及静态/动态标志应该是库和所有使用库的应用都一致。
PQuntrace
关闭PQtrace
打开的跟踪。
void PQuntrace(PGconn *conn);