On this page
33.10. 控制功能
这些函数控制 libpq 行为的其他细节。
int PQclientEncoding(const PGconn *conn);
请注意,它返回编码 ID,而不是诸如EUC_JP
之类的符号字符串。如果不成功,则返回-1.要将编码 ID 转换为编码名称,可以使用:
char *pg_encoding_to_char(int encoding_id);
int PQsetClientEncoding(PGconn *conn, const char *encoding);
conn
是与服务器的连接,encoding
*是您要使用的编码。如果函数成功设置了编码,则返回 0,否则返回-1.可以使用PQclientEncoding
确定此连接的当前编码。
typedef enum
{
PQERRORS_TERSE,
PQERRORS_DEFAULT,
PQERRORS_VERBOSE
} PGVerbosity;
PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
PQsetErrorVerbosity
设置详细模式,并返回连接的先前设置。在* TERSE *模式下,返回的消息仅包括严重性,主要文本和位置;这通常适合单行。默认模式产生的消息包括以上内容以及任何详细信息,提示或上下 Literals 段(这些字段可能跨越多行)。 * VERBOSE *模式包括所有可用字段。更改详细程度不会影响已存在的PGresult
对象可用的消息,只会影响随后创建的对象。 (但是,如果要打印以前的错误并使用不同的详细程度,请参见PQresultVerboseErrorMessage
.)
typedef enum
{
PQSHOW_CONTEXT_NEVER,
PQSHOW_CONTEXT_ERRORS,
PQSHOW_CONTEXT_ALWAYS
} PGContextVisibility;
PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context);
PQsetErrorContextVisibility
设置上下文显示模式,返回连接的先前设置。此模式控制消息中是否包含CONTEXT
字段(除非详细设置为* TERSE *,在这种情况下永远不会显示CONTEXT
)。 * NEVER 模式从不包含CONTEXT
,而 ALWAYS 始终包含它(如果可用)。在 ERRORS *模式(默认)下,CONTEXT
字段仅用于错误消息,而不用于通知和警告。更改此模式不会影响已存在的PGresult
对象可用的消息,只会影响随后创建的对象。 (但如果要使用其他显示模式打印先前的错误,请参见PQresultVerboseErrorMessage
.)
void PQtrace(PGconn *conn, FILE *stream);
Note
在 Windows 上,如果 libpq 库和应用程序使用不同的标志编译,则此函数调用将使应用程序崩溃,因为FILE
指针的内部表示形式不同。具体来说,该库以及使用该库的所有应用程序的多线程/单线程,发行/调试和静态/动态标志应相同。
void PQuntrace(PGconn *conn);