데이터베이스 서버에 대한 연결이 성공적으로 성공하면 여기에 설명 된 기능은 SQL을 수행하는 데 사용됩니다. 윈 토토 및 명령.
PQEXEC윈 토토 제출Postgres기다리고 있습니다 결과.
pgresult *pqexec (pgconn *conn, const char *query);pgresult 포인터 또는 널 포인터를 반환합니다. 에이 비 널 포인터는 일반적으로 메모리를 제외하고 반환됩니다 윈 토토를 백엔드. 널이 반환되면 pgres_fatal_error 결과. pqerrormessage를 사용하여 더 많은 것을 얻으십시오 오류에 대한 정보.
thepgresult구조가 캡슐화됩니다 백엔드에서 반환 된 윈 토토 결과.libpq응용 프로그램 프로그래머가 조심해야합니다 pgresult 추상화를 유지하십시오. 아래 액세서 기능을 사용하십시오 pgresult의 내용에 도달합니다. 직접 참조하지 마십시오 Pgresult 구조의 필드는 변경 될 수 있기 때문입니다. 미래에. (시작Postgres릴리스 6.4, 구조의 정의 pgresult는 Libpq-fe.h에서도 제공되지 않습니다. 오래된 코드가있는 경우 pgresult 필드에 직접 액세스하면 계속 사용할 수 있습니다. libpq-int.h도 포함하지만 코드를 수정하는 것이 좋습니다. 곧.)
pqresultstatus결과를 반환합니다 쿼리 상태. pqresultstatus는 그 중 하나를 반환 할 수 있습니다 다음 값 :
pgres_empty_query, pgres_command_ok, / * 윈 토토는 데이터를 반환하는 명령이었다 * / pgres_tuples_ok, / * 윈 토토는 튜플을 성공적으로 반환했습니다 * / pgres_copy_out, / * 복사 아웃 (서버에서) 데이터 전송 시작 * / pgres_copy_in, / * 복사 (서버로) 데이터 전송 시작 * / pgres_bad_response, / * 예기치 않은 응답이 접수되었습니다 * / pgres_nonfatal_error, pgres_fatal_error결과 상태가 pgres_tuples_ok 인 경우 루틴입니다 아래에 설명 된 것은 질문. 제로 튜플을 검색하는 선택이 있습니다. 여전히 pgres_tuples_ok를 보여줍니다. pgres_command_ok는 명령을위한 것입니다 튜플을 반환 할 수 없습니다.
pqresstatus변환 열거 된 유형은 pqresultstatus에 의해 문자열로 반환됩니다 상태 코드를 설명하는 상수.
const char *pqresstatus (execstatustype status);이전 코드는 직접 액세스하여 동일한 작업을 수행 할 수 있습니다. libpq 내부의 상수 문자열 배열로,
extern const char * const pgresstatus [];그러나 함수를 사용하는 것은 대신 권장됩니다 더 휴대성이 뛰어나고 범위 외 값에서는 실패하지 않습니다.
PQRESULTERRORMESSAGE반환합니다 윈 토토와 관련된 오류 메시지 또는 빈 문자열 오류가 없었습니다.
const char *pqresulterrormessage (pgresult *res);PQEXEC 또는 PQGETRESULT CALL 직후, PQERRORMESSAGE (연결 중)는 동일한 문자열을 반환합니다. PQRESULTERRORMESSAGE (결과에서). 그러나 pgresult는 의지합니다 연결은 파괴 될 때까지 오류 메시지를 유지합니다 후속 작업이 완료되면 오류 메시지가 변경됩니다. 사용 PQRESULTERRORMESAGE 관련 상태를 알고 싶을 때 특정 pgresult로; 원하는 경우 pqerrormessage를 사용하십시오 연결에서 최신 작업의 상태를 알고 있습니다.
pqntuples번호를 반환합니다 윈 토토 결과의 튜플 (인스턴스)
int pqntuples (pgresult *res);
pqnfields번호를 반환합니다 윈 토토 결과의 각 튜플에서 필드 (속성)
int pqnfields (pgresult *res);
pqbinaryTuples1 인 경우 1을 반환합니다 pgresult에는 이진 튜플 데이터가 포함되어 있습니다. 데이터.
int pqbinaryTuples (pgresult *res);현재, 이진 튜플 데이터는 쿼리로만 반환 할 수 있습니다. a에서 데이터를 추출합니다.BINAGE커서.
pqfname필드를 반환합니다 (속성) 주어진 필드 인덱스와 관련된 이름. 필드 지수는 0에서 시작합니다.
char *pqfname (pgresult *res, int field_index);
pqfnumber필드를 반환합니다 (속성) 주어진 필드 이름과 관련된 색인.
int pqfnumber (pgresult *res, char* field_name);
10177_10241
pqftype필드 유형을 반환합니다 주어진 필드 인덱스와 관련이 있습니다. 반환 된 정수는입니다 유형의 내부 코딩. 현장 지수는 0에서 시작합니다.
oid pqftype (pgresult *res, int field_num);
pqfsize크기를 바이트로 반환합니다 주어진 필드 인덱스와 관련된 필드의. 필드 지수는 0에서 시작합니다.
int pqfsize (pgresult *res, int field_index);pqfsize이 필드에 할당 된 공간을 데이터베이스 튜플, 즉 서버 바이너리의 크기 데이터 유형의 표현. 필드가 있으면 -1이 반환됩니다 가변 크기.
pqfmod유형 별을 반환합니다 주어진 필드와 관련된 필드의 수정 데이터 색인. 현장 지수는 0에서 시작합니다.
int pqfmod (pgresult *res, int field_index);
pqgetValue단일 필드를 반환합니다 (속성) pgresult의 한 튜플 값. 튜플과 필드 지수는 0에서 시작합니다.
char * pqgetValue (pgresult * res, int tup_num, int field_num);대부분의 쿼리의 경우 pqgetValue가 반환 한 값은 속성 값의 null-terminated ascii 문자열 표현. 그러나 pqbinaryTuples ()가 참이면 pqgetValue에 의해 반환 된 값 내부 형식의 유형의 이진 표현입니다. 백엔드 서버 (필드 인 경우 크기 단어를 포함하지 않음 가변 길이)입니다. 그런 다음 프로그래머의 책임입니다 데이터를 올바른 C 유형으로 캐스트하고 변환하십시오. 포인터 PQGetValue 포인트에 의해 반환 된 스토리지에 반환 pgresult 구조. 하나는 그것을 수정해서는 안됩니다 사용하려면 값을 다른 스토리지에 명시 적으로 복사하십시오. pgresult 구조 자체의 수명을 지나서.
pqgetLength길이를 반환합니다 바이트의 필드 (속성). 튜플 및 현장 지수는 시작합니다 0.
int pqgetlength (pgresult *res, int tup_num, int field_num);이것은 특정 데이터 값의 실제 데이터 길이입니다. 이것이 PQGetValue가 가리키는 물체의 크기입니다. 주목하십시오 ascii-represented 값의 경우이 크기는 PQFSize에 의해보고 된 이진 크기.
PQGETISNULLa 널 입력. 튜플 및 현장 지수는 0에서 시작합니다.
int pqgetisnull (pgresult *res, int tup_num, int field_num);이 함수는 필드에 null이 포함 된 경우 1, 0이면 0을 반환합니다. 널 값이 아닌 값이 포함되어 있습니다. (pqgetValue는 an을 반환합니다 널 필드를위한 널 포인터가 아닌 빈 문자열.)
pqcmdstatus명령을 반환합니다 생성 된 SQL 명령의 상태 문자열 pgresult.
char *pqcmdstatus (pgresult *res);
pqcmdtuples번호를 반환합니다 SQL 명령에 의해 영향을받는 줄.
const char *pqcmdtuples (pgresult *res);pgresult를 생성 한 SQL 명령이 삽입 된 경우 업데이트 또는 삭제, 이것은 수를 포함하는 문자열을 반환합니다. 줄에 영향을 받았습니다. 명령이 다른 것이라면 반환합니다 빈 문자열.
pqoidstatus문자열을 함께 반환합니다 SQL 명령이 끼워 넣다. 그렇지 않으면 빈 문자열을 반환합니다.
char * pqoidstatus (pgresult * res);
pqprint모든 튜플을 인쇄합니다 그리고 선택적으로 속성은 지정된 출력에 이름을 지정합니다 개울.
void pqprint (파일* fout, /* 출력 스트림* / pgresult* res, pqprintopt* po); struct _pqprintopt PQBOOL 헤더; / * 출력 필드 제목 및 행 카운트 인쇄 */ pqbool 정렬; / * 채우기 필드 정렬 */ PQBOOL 표준; / * Old Brain Dead 형식 */ PQBOOL HTML3; / * 출력 HTML 테이블 */ PQBOOL 확장; / * 테이블 확장 */ PQBOOL 호출기; / * 필요한 경우 출력을 위해 호출기를 사용하십시오 */ char *fieldsep; / * 필드 분리기 */ char *tableopt; / * html에 삽입 <테이블 ... */ char *캡션; / * html <caption */ char ** fieldname; / * NULL 교체 필드 이름의 배열 */ ;이 함수는 pqprinttuples ()를 대체하기위한 것입니다 이제는 쓸모가 없습니다. 그만큼PSQL프로그램 사용 pqprint () 쿼리 결과를 표시하려면
pqprinttuples모든 것을 인쇄합니다 튜플 및 선택적으로 속성 이름은 지정된 이름입니다 출력 스트림.
void pqprinttuples (pgresult* res, 파일* fout, /* 출력 스트림* / int printattName,/* 인쇄 속성 이름 여부*/ int terseoutput, /* delimiter bar 여부?* / int 너비); /* 열의 너비, 0*/ 인 경우 가변 너비
PQDISPLAYTUPLES모든 것을 인쇄합니다 튜플 및 선택적으로 속성 이름은 지정된 이름입니다 출력 스트림.
void pqdisplaytuples (pgresult* res, 파일* fout, /* 출력 스트림* / int fillalign, / * 열 정렬을위한 공간 채우기 * / const char *fieldsep, / *필드 분리기 * / int printheader, /* 디스플레이 헤더? */ int quiet); / * 끝에서 행 카운트의 인쇄 억제 */pqdisplaytuples ()는 pqprinttuples ()를 대체하기위한 것입니다. 그리고 결국 pqprint ()에 의해 대체되었습니다.
PQCLEAR스토리지를 해제합니다 pgresult와 관련이 있습니다. 모든 쿼리 결과가 있어야합니다 더 이상 필요하지 않을 때 pqclear를 통해 해방됩니다.
void pqclear (pqresult *res);필요한만큼 Pgresult 객체를 주위에 보관할 수 있습니다. 그것; 새 쿼리를 발행 할 때 또는 심지어 연결을 닫으십시오. 제거하려면 PQCLEAR로 전화해야합니다. 이렇게하지 않으면 프론트 엔드에서 메모리 누출이 발생합니다. 애플리케이션.
pqmakeemptypypgresult구성 앤 주어진 상태를 가진 빈 pgresult 객체.
pgresult * pqmakeemptypypygresult (pgconn * conn, execstatustype 상태);이것은 LIBPQ의 내부 루틴을 할당하고 초기화하는 내부 루틴입니다 빈 pgresult 물체. 일부 응용 프로그램이므로 수출됩니다 결과 객체 (특히 객체)를 생성하는 것이 유용하다고 생각합니다 오류 상태) 자체. Conn이 Null이 아닌 상태 인 경우 오류가 표시되고 연결의 현재 errormessage가 복사됩니다 pgresult로. PQCLEAR는 결국 호출되어야합니다 객체는 libpq 자체에 의해 반환 된 pgresult와 마찬가지로.