27.4. �첽�����

PQexec ��������ͨ��ͬ��Ӧ�����ύ�����Ѿ����㹻�õ��ˡ� ������ȴ�м�����Ҫ��ȱ�ݣ�����Щȱ�ݿ��ܶ�ijЩ�û�����Ҫ��

�����ܵ���Щ���Ƶ�Ӧ�ÿ��Ը�������ĺ�������Щ����Ҳ�ǹ��� PQexec �ĺ����� Ҳ�� PQsendQueryParams�� PQsendPrepare �� PQsendQueryPrepared�� ���ǿ��Ժ� PQgetResult һ��ʹ�ã��ֱ����ڸ��� PQexecParams��PQprepare �� PQexecPrepared �Ĺ��ܡ�

PQsendQuery

��������ύһ����������ȴ������ �����ѯ�ɹ������򷵻� 1�����򷵻� 0�� ����ʱ��������PQerrorMessage��ȡ����ʧ�ܵ���Ϣ����

int PQsendQuery(PGconn *conn, const char *command);

�ڳɹ����� PQsendQuery�󣬵��� PQgetResult һ�λ��߶�λ�ȡ����� �� PQgetResult ���� NULL ָ�룬�����������֮ǰ�� ���Dz����ٵ��� PQsendQuery ����ͬһ���������

PQsendQueryParams

���������ύһ������ͣ�������Ҫ�ģ��ָ��IJ����������ȴ������

int PQsendQueryParams(PGconn *conn,
                      const char *command,
                      int nParams,
                      const Oid *paramTypes,
                      const char * const *paramValues,
                      const int *paramLengths,
                      const int *paramFormats,
                      int resultFormat);

�����Ч�� PQsendQuery��ֻ�Dz�ѯ�������ԺͲ�ѯ�ִ��ֿ������� �����IJ�������� PQexecParams һ������ PQexecParams ���ƣ� �������� 2.0 �汾��Э�������Ϲ�����������ֻ�����ڲ�ѯ�ִ������һ�����

PQsendPrepare

����һ�����󣬴���һ������������׼������䣬�����ȴ�������

int PQsendPrepare(PGconn *conn,
                  const char *stmtName,
                  const char *query,
                  int nParams,
                  const Oid *paramTypes);

���� PQprepare ���첽�汾��������ܷ�����������򷵻� 1�� ������ܣ��򷵻� 0���ڳɹ�����֮�󣬵��� PQgetResult �жϷ������Ƿ�ɹ�������׼������䡣 ��������IJ����Ĵ���� PQprepare һ���� ���� PQprepare���������� 2.0 �汾Э�����������ת��

PQsendQueryPrepared

����һ��ִ�д��и���������׼���õ��������󣬲��ȴ������

int PQsendQueryPrepared(PGconn *conn,
                        const char *stmtName,
                        int nParams,
                        const char * const *paramValues,
                        const int *paramLengths,
                        const int *paramFormats,
                        int resultFormat);

����������� PQsendQueryParams������Ҫִ�е�������ͨ����һ��ǰ��׼���õ���������������ģ� �����Ǹ���һ����ѯ�ִ��������IJ�������� PQexecPrepared һ�������� PQexecPrepared�� ��Ҳ������ 2.0 �汾��Э���������ܡ�

PQgetResult

�ȴ���ǰ�� PQsendQuery��PQsendQueryParams�� PQsendPrepare�� ���� PQsendQueryPrepared ���÷��ص���һ������� Ȼ�󷵻�֮���������������û�и������󷵻� NULL��

PGresult *PQgetResult(PGconn *conn);

�����ظ��ĵ��� PQgetResult ��ֱ�������� NULL�� ����������������������û�л�Ծ������ʱ���ã� PQgetResult ��ֻ����������һ����ָ�롣�� ÿ�� PQgetResult ���صķ� NULL �����Ӧ����ǰ�������� PGresult ���ʺ������з����� ��Ҫ�����ڽ����������� PQclear �ͷ�ÿ��������� ע�⣬PQgetResult ֻ������һ�������ǻ�Ծ�Ķ��ұ���ķ������ݻ�û�б� PQconsumeInput ��ȡʱ������

ʹ�� PQsendQuery �� PQgetResult ����� PQexec��һ�����⣺ ���һ�������ַ���������� SQL ��� ��Щ����Ľ�����Զ����Ļ�á���˳��˵һ�䣺����������һ�ּ򵥵��ص�����ģʽ�� �ͻ��˿��Դ���һ������Ľ����������������Ȼ�ڴ���ͬһ�����ַ����ĺ���IJ�ѯ���� ���ǣ����� PQgetResult ����Ȼ����ǰ�˱�����סֱ�������������һ�� SQL �����һ�����ͨ�������ʹ�������������������⣺

PQconsumeInput

������ڷ���������������ã���ʹ��֮��

int PQconsumeInput(PGconn *conn);

PQconsumeInput ͨ������ 1 ����"û�д���"�� ������ 0 ������ij�ִ�����,�����ʱ�������PQerrorMessage���� ע����������������ʵ�����Ƿ��ռ������ݡ��ڵ��� PQconsumeInput֮��Ӧ�ÿ��Լ�� PQisBusy ��/�� PQnotifies ��һ�����ǵ�״̬�Ƿ�ı䡣

PQconsumeInput ������Ӧ�û�û�����ô�������֪ͨ������±����á� �����������ȡ���õ����ݲ�����һ���������ﱣ��������������һ�� select() ��׼���ñ�ʶ�����ɡ�����Ӧ�þͿ���ʹ�� PQconsumeInput ������� select() ������Ȼ���ڿ��е�ʱ��������

PQisBusy

�ڲ�ѯæ��ʱ�򷵻� 1 ��Ҳ����˵��PQgetResult ������ס�ȴ����롣 һ�� 0 �ķ��ر�����ʱ���� PQgetResult����ȷ����������

int PQisBusy(PGconn *conn);

PQisBusy ����������ͼ�ӷ�������ȡ���ݣ����Ա����ȵ��� PQconsumeInput������æ״̬����Զ����������

һ��ʹ����Щ�����ĵ��͵�Ӧ�ý���һ����ѭ��ʹ�� select() �ȴ����������봦�������������һ�����������Ƿ���������������׼���ã� �� select() �ĽǶ��������� PQsocket ��ʶ���ļ����������Ѿ��пɶ�ȡ�����ݡ� ����ѭ����⵽����׼���ã���������PQconsumeInput��ȡ���롣 Ȼ����Ե��� PQisBusy ���� false (0)������Ը��� PQgetResult��ͬ�������û�Ӧ�ã����Ե��� PQnotifies���NOTIFY��Ϣ����������� Section 27.7����

һ��ʹ�� PQsendQuery/PQgetResult �Ŀͻ���ͬ��Ҳ������ͼȡ��һ�����ڱ������������������� Section 27.5�� ���ǣ����� PQcancel ���ص�ֵ�Ƕ��٣�Ӧ�ö�����ʹ�� PQgetResult ���������Ķ�ȡ����Ķ������С� һ�γɹ���ȡ��ֻ�ᵼ���������������¿�Щ������

ͨ��ʹ�����������ĺ��������ǿ��Ա����ڵȴ��������ݿ��������ʱ��������� ������Ӧ�û����п��������ڸ���������������ϡ���������Ƚ��ټ�������Ҳ���ܷ����� ����������Ҫ���ͷdz����� SQL �����������ֵ��ʱ�� �����������п��ܵ�����Ӧ��ͨ�� COPY IN �������ݵ�ʱ�򡣣� Ϊ�˱�����������ԣ�ʵ����ȫ�ķ��������ݿ���������ǿ���ʹ�����ж���ĺ�����

PQsetnonblocking

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

int PQsetnonblocking(PGconn *conn, int arg);

���argΪ 1��������״̬����Ϊ�������� ���argΪ 0�� ������״̬����Ϊ��������� OK ���� 0��������󷵻� -1��

�ڷ�����״̬������ PQputline��PQputnbytes�� PQsendQuery �� PQendcopy ��ʱ�򲻱������� �����������Ҫ�ٴε�������ʱ������һ������

��ע�� PQexec ���������κη�����ģʽ�� ��������� PQexec����ô������Ϊ���������ġ�

PQisnonblocking

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

int PQisnonblocking(const PGconn *conn);

�����������Ϊ������״̬������ 1�����������״̬���� 0��

PQflush

��ͼ���κ������Ŷӵ����ݳ�ˢ���������� ����ɹ������߷��Ͷ���Ϊ�գ����� 0�������ij��ԭ��ʧ�ܷ��� -1�� ���������޷��ѷ��Ͷ����е��������ݶ����ͳ�ȥ������ 1�� ���������ֻ�������Ӳ�Ϊ����ģʽ��ʱ��Ż���֣���

int PQflush(PGconn *conn);

��һ���������������Ϸ����κ������������֮�� ����PQflush �� ������� 1���͵ȴ��׽���д׼����Ȼ���ٴε��ã��ظ��������ֱ�������� 0�� һ��PQflush���� 0����ȴ��׽���Ϊ��׼���ã�׼����֮���������������ȡ��