27.2. ����״̬����

��Щ������������ѯ���ִ����ݿ����Ӷ����״̬��

Tip: libpqӦ�ó���ԱӦ����ϸά��PGconn�ṹ�� ʹ������ķ��ʺ�������ȡPGconn�����ݡ� ����ֱ������PGconn�ṹ����ֶΣ� ��Ϊ��Щ�ֶ��ڽ����ܱ��ı䡣 ���� PostgreSQL �汾 6.4 ��ʼ, ���� struct PGconn ����Ķ���������û�з��� libpq-fe.h� �������һЩֱ�ӷ���PGconn������ľɴ��룬�����ͨ������ libpq-int.h ���������ǣ������ǹ�����Ͽ��޸���Щ���롣��

����ĺ����������ӽ���ʱ�IJ�������Щ������ PGconn ������������ڼ��ǹ̶��ġ�

PQdb

�������ӵ����ݿ�����

char *PQdb(const PGconn *conn);

PQuser

�������ӵ��û�����

char *PQuser(const PGconn *conn);

PQpass

�������ӵĿ��

char *PQpass(const PGconn *conn);

PQhost

�������ӵķ�������������

char *PQhost(const PGconn *conn);

PQport

�������ӵĶ˿ںš�

char *PQport(const PGconn *conn);

PQtty

�������ӵĵ��Կ���̨TTY�� ������Ѿ���ʱ�ˣ���Ϊ����������ע�� TTY ���ã��������������Ϊ�����¼��ݡ���

char *PQtty(const PGconn *conn);

PQoptions

PQoptions �������������д��ݵ�������ѡ�

char *PQoptions(const PGconn *conn);

����ĺ���������Щ�ڶ� PGconn ������в����Ĺ����п��ܱ仯��״̬���ݡ�

PQstatus

�������ӵ�״̬��

ConnStatusType PQstatus(const PGconn *conn);

���״̬������һϵ��ֵ֮һ�� ������������һ���첽���ӹ�������ֻ�ܿ������е������� CONNECTION_OK �� CONNECTION_BAD��һ�������ݿ�ijɹ������ӷ���״̬ CONNECTION_OK�� һ��ʧ�ܵ���ͼ��״̬ CONNECTION_BAD ��ʶ�� ͨ����һ�� OK ״̬�����ֵ� PQfinish������һ��ͨѶʧ�ܿ��ܻᵼ��״̬����ظı�Ϊ CONNECTION_BAD ����ʱӦ�ÿ������ŵ��� PQreset ���ָ���

����PQconnectStart��PQconnectPoll��Ŀ�������ܳ��ֵ�������״̬�롣

PQtransactionStatus

���ص�ǰ��������������״̬��

PGTransactionStatusType PQtransactionStatus(const PGconn *conn);

״̬������ PQTRANS_IDLE ����ǰ���У��� PQTRANS_ACTIVE �����ڴ���һ������� PQTRANS_INTRANS �����У���һ���Ϸ���������ڣ��� ���� PQTRANS_INERROR �����У���һ��ʧ�ܵ�������ڣ��� ������������⣬�򷵻� PQTRANS_UNKNOWN�� ֻ����һ����ѯ���͸��˷��������һ�û����ɵ�ʱ��ŷ��� PQTRANS_ACTIVE��

Caution

���ʹ��һ��֧�� autocommit ��������������Ϊ�رյ� PostgreSQL 7.3 �汾�ķ������� ��ô PQtransactionStatus ����������ȷ�Ľ�����������˵� autocommit ���Զ��ύ�������Ѿ������ˣ� �ڽ����İ汾�ķ������в��ٴ��ڡ�

PQparameterStatus

���ҷ�������һ����ǰ�������á�

const char *PQparameterStatus(const PGconn *conn, const char *paramName);

��Щ�����ڽ������ӻ������ǵ�ֵ�ı��ʱ����ɷ������Զ����档 PQparameterStatus �������ڲ�ѯ��Щ���á� �������ʶ��Щ��������ô�����ص�ǰֵ�����򷵻� NULL��

��ǰ�汾����IJ����� server_version�� server_encoding�� client_encoding�� session_authorization�� DateStyle�� TimeZone �� integer_datetimes�� ���汾 8.0 ֮ǰû�б��� server_encoding��TimeZone �� integer_datetimes���� ��ע�� server_version�� server_encoding �� integer_datetimes �������������޸ġ�

Э��汾 3.0 ֮ǰ�ķ��������ᱨ��������ã����� libpq �����һЩ�߼����ڻ�ȡ server_version �� client_encoding ����ֵ�� ���ǹ���Ӧ������ʹ�� PQparameterStatus��������ʹ������Ĵ����������Щֵ�� ������Ҫע�⣬�� 3.0 ֮ǰ������Э���������ͨ�� SET �ı��� client_encoding �����ᱻ PQparameterStatus ��ӳ�������� ���� server_version���ּ� PQserverVersion����������ֵ��ʽ�� �����׽��бȽϡ�

���ܷ��ص�ָ������Ϊ const����ʵ����ָ��һ���� PGconn �ṹ�����Ŀɱ�Ĵ洢������˼������ָ����ѯ������Ч�Dz����ǵġ�

PQprotocolVersion

��ѯ��ʹ�õ�ǰ/���Э�顣

int PQprotocolVersion(const PGconn *conn);

Ӧ�ÿ���ϣ��ʹ������������ж�ij�������Ƿ�֧�֡� Ŀǰ�����ܵ���ֵ�� 2��2.0 �汾��Э�飩��3��3.0 �汾��Э�飩�������㣨���Ӵ��󣩡� �������������֮�������ֵ������ı䣬�������������õĹ����У��������ǿ��ܸı�ġ� 3.0 Э��ͨ���������� PostgreSQL 7.4 ���߸��°汾�ķ�����ͨѶ�� 7.4 ��ǰ�İ汾ֻ֧�� 2.0 �汾��Э�顣��1.0 �汾��Э���Ѿ���ʱ�ˣ����ٱ� libpq ֧�֡���

PQserverVersion

Returns an integer representing the backend version.

int PQserverVersion(const PGconn *conn);

Ӧ�ÿ���ʹ����������ж��������ӵ����ݿ�������İ汾�� ������ͨ���������Ρ��Լ������汾��ת������λʮ���������Ұ�����������һ����ɵġ� ���磬�汾 7.4.2��ת��Ϊ 70402���� 8.1 ��ת��Ϊ 80100������ʾǰ�����㣩�� �������ʧ�ܣ��򷵻��㡣

PQerrorMessage

���������в�������������Ĵ�����Ϣ��

char *PQerrorMessage(const PGconn *conn);

��������libpq������ʧ��ʱ����Ϊ PQerrorMessage ����һ����Ϣ�� ע��libpq�Ĵ�ͳ�ǣ�һ���ǿյ�PQerrorMessage ���ڽ�β����һ�����С������߲�Ӧ��ֱ���ͷŽ����������ͷ����ڽ� PGconn ������ݸ� PQfinish ��ʱ���Զ����еġ� ���Dz��ܼ����ڲ�ͬ�� PGconn �ṹ�����У�����ִ�����һ���ġ�

PQsocket

��ȡ����������ӵ��׽��ֵ��ļ���������š� һ����Ч��������Ӧ���Ǵ��ڻ���� 0�����Ϊ -1 ��ʾ��ǰû��������������Ӵ򿪡� ���������IJ����У�����������ı䣬���ǿ����������������õĹ����б仯����

int PQsocket(const PGconn *conn);

PQbackendPID

���ش�������ӵķ������������Ľ��̺�ID��PID����

int PQbackendPID(const PGconn *conn);

���������PID �ڵ��ԺͶԱ�NOTIFY��Ϣ ����������֪ͨ�ķ��������̵� PID ��ʱ�����á� ע���PID �����������ݿ�������������Ľ��̣������DZ���������

PQgetssl

��������ʹ�õ� SSL �ṹ���������û��ʹ�� SSL �Ļ����� NULL��

SSL *PQgetssl(const PGconn *conn);

����ṹ�������ں�ʵ���ܼ��𣬼���������֤����Ϣ���ο� OpenSSL �ĵ���ȡ��������ṹ�ĸ�����Ϣ��

Ϊ�˻�ȡ�����������ȷԭ�Σ�����붨�� USE_SSL�� ���������Զ���������OpenSSL��ssl.h��