데이터베이스 서버에 대한 연결이 성공적으로 이루어지면 설정된 경우 여기에 설명된 함수는 SQL을 수행하는 데 사용됩니다. 쿼리 및 토토 꽁 머니.
PQexec다음에 명령을 제출하세요
서버에 접속하고 결과를 기다립니다.
PGresult *PQexec(PGconn *conn,
const char *쿼리);
a를 반환토토 꽁 머니.PGresult포인터
또는 NULL 포인터일 수도 있습니다. NULL이 아닌 포인터는
메모리가 부족한 경우를 제외하고는 일반적으로 반환됩니다.
토토 꽁 머니을 보낼 수 없는 등의 심각한 오류
백엔드. NULL이 반환되면 a처럼 처리되어야 합니다.PGRES_FATAL_ERROR결과. 사용PQerrorMessage더 많이 얻으려면
오류에 대한 정보입니다.
그PGresult구조
백엔드에서 반환된 결과를 캡슐화토토 꽁 머니.libpq응용 프로그램 프로그래머는 조심해야 토토 꽁 머니
유지하기 위해PGresult추상화. 아래 접근자 기능을 사용하여
내용PGresult. 피하다
의 필드를 직접 참조토토 꽁 머니.PGresult주제이기 때문에 구조
앞으로는 변할 것이다. (시작부터)포스트그레SQL6.4, 구조체의 정의PGresult제공되지도 않습니다libpq-fe.h. 오래된 코드가 있는 경우
액세스PGresult필드를 직접적으로,
포함하면 계속 사용할 수 있습니다.libpq-int.h또한 문제를 해결하는 것이 좋습니다.
코드는 곧 제공됩니다.)
PQresultStatus다음을 반환합니다.
명령의 결과 상태입니다.
ExecStatusType PQresultStatus(const PGresult *res)
PQresultStatus반환 가능
다음 값 중 하나:
PGRES_EMPTY_QUERY-- 백엔드로 전송된 문자열이 비어 있습니다.
PGRES_COMMAND_OK-- no를 반환하는 토토 꽁 머니이 성공적으로 완료되었습니다. 데이터
PGRES_TUPLES_OK-- 쿼리가 성공적으로 토토 꽁 머니되었습니다.
PGRES_COPY_OUT-- 복사 (서버에서) 데이터 전송이 시작되었습니다.
PGRES_COPY_IN-- 복사 (서버로) 데이터 전송이 시작되었습니다.
PGRES_BAD_RESPONSE-- 서버의 응답을 이해할 수 없습니다.
PGRES_NONFATAL_ERROR
PGRES_FATAL_ERROR
결과 상태가 다음과 같은 경우PGRES_TUPLES_OK, 루틴 설명 아래는 에서 반환된 행을 검색하는 데 사용할 수 있습니다. 쿼리. 검색하는 데 발생하는 SELECT 토토 꽁 머니에 유의하세요. 0개의 행이 여전히 표시됩니다.PGRES_TUPLES_OK. PGRES_COMMAND_OK다음을 수행할 수 있는 명령용입니다. 행(INSERT, UPDATE 등)을 반환하지 않습니다. 의 응답PGRES_EMPTY_QUERY종종 노출 클라이언트 소프트웨어의 버그입니다.
PQresStatus변환합니다
PQresultStatus가 문자열로 반환한 열거형
상태 코드를 설명하는 상수입니다.
char *PQresStatus(ExecStatusType 상태);
PQresultErrorMessage쿼리와 관련된 오류 메시지를 반환토토 꽁 머니.
오류가 없으면 빈 문자열입니다.
char *PQresultErrorMessage(const PGresult *res);
즉시 다음PQexec또는PQgetResult전화,PQerrorMessage(연결 시)는
와 동일한 문자열을 반환토토 꽁 머니.PQresultErrorMessage(결과에 대해).
그러나 aPGresult유지됩니다
오류 메시지는 파괴될 때까지 표시되지만 연결은
후속 작업이 완료되면 오류 메시지가 변경됩니다.
완료. 사용PQresultErrorMessage원할 때
특정과 관련된 상태를 알 수 있습니다.PGresult; 사용PQerrorMessage당신이 알고 싶을 때
연결에 대한 최신 작업의 상태입니다.
PQclear저장공간 확보
와 연관됨PGresult.
모든 쿼리 결과는 다음을 통해 해제되어야 합니다.PQclear더 이상 필요하지 않은 경우.
void PQclear(PQresult *res);
당신은 다음을 유지할 수 있습니다.PGresult필요한 한 계속해서 반대하십시오. 그것은 가지 않는다
새 쿼리를 토토 꽁 머니하거나 쿼리를 닫더라도
연결. 이를 제거하려면 전화해야 합니다.PQclear. 이를 수행하지 않으면 결과가 발생토토 꽁 머니.
프런트엔드 애플리케이션에서 메모리 누수가 발생했습니다.
PQmakeEmptyPGresult빈 공간을 구성토토 꽁 머니PGresult주어진 상태의 개체입니다.
PGresult* PQmakeEmptyPGresult(PGconn *conn, ExecStatusType 상태);
이것은libpq의
빈 공간을 할당하고 초기화하는 내부 루틴PGresult객체. 수출된다
일부 응용 프로그램에서는 결과를 생성하는 것이 유용하다고 생각하기 때문에
개체(특히 오류 상태의 개체)
스스로. 만일콘아님
NULL 및 상태는 오류를 나타냅니다. 연결의
현재 errorMessage는에 복사됩니다.PGresult.참고하세요PQclear결국 호출되어야 함
a와 마찬가지로 객체PGresult반환자:libpq그 자체.
PQescapeString이스케이프
SQL 쿼리 내에서 사용할 문자열입니다.
size_t PQescapeString(char *to, const char *from, size_t 길이);
다음에서 받은 문자열을 포함하려는 경우 신뢰할 수 없는 출처(예: 무작위 사용자가 입력한 값), SQL에 직접 포함할 수 없습니다. 보안상의 이유로 문의합니다. 대신에 인용을 해야 합니다. SQL에서 다르게 해석되는 특수 문자 파서.
PQescapeString이것을 수행토토 꽁 머니
운영.from다음을 가리킵니다.
이스케이프할 문자열의 첫 번째 문자길이매개변수는
이 문자열의 문자 수(종료 0바이트는
필요하지도 않고 계산되지도 않음).에다음을 수행할 수 있는 버퍼를 가리켜야 합니다.
값의 두 배보다 최소한 하나 이상의 문자를 보유하십시오.길이, 그렇지 않으면 동작
정의되지 않았습니다. 에게 전화PQescapeString다음의 이스케이프 버전을 작성합니다.from문자열을에버퍼, 특수 교체
해를 끼치 지 않도록 문자를 추가하고
0바이트를 종료토토 꽁 머니. 둘러싸야 하는 작은따옴표포스트그레SQL문자열 리터럴은 다음과 같습니다.
결과 문자열의 일부가 아닙니다.
PQescapeString반환
쓴 문자 수에, 종료 0바이트를 포함하지 않음.
다음과 같은 경우 동작이 정의되지 않습니다.에그리고from문자열이 겹칩니다.
PQescapeBytea바이너리를 이스케이프토토 꽁 머니.
문자열(바이테아유형) SQL 내에서 사용
쿼리.
부호 없는 문자 *PQescapeBytea(부호 없는 문자 *from,
size_t from_length,
size_t *to_length);
확실함ASCII문자반드시탈출(하지만
모든 문자5월수
이스케이프됨) a의 일부로 사용되는 경우바이테아an의 문자열 리터럴SQL성명. 일반적으로 문자를 이스케이프하려면 문자가 변환됩니다.
십진수와 동일한 세 자리 8진수로ASCII값, 앞에는
백슬래시 두 개. 작은따옴표(') 및 백슬래시(\)
문자에는 특별한 대체 이스케이프 시퀀스가 있습니다. 참조사용자 가이드더 많은 정보를 원하시면.PQescapeBytea이것을 수행합니다
최소한의 필수 문자만 이스케이프 처리합니다.
그from매개변수는 다음을 가리킵니다.
이스케이프할 문자열의 첫 번째 문자from_length매개변수
이 이진 문자열의 문자 수를 반영합니다(a
0바이트를 종료하는 것은 필요하지도 계산되지도 않습니다.)to_length매개변수는 다음을 가리켜야 합니다.
결과 이스케이프 문자열을 보유하는 데 적합한 버퍼로
길이. 결과 문자열 길이에는 다음이 포함되지 않습니다.
결과의 0바이트를 종료합니다.
PQescapeBytea반환
이스케이프 버전의from매개변수 바이너리 문자열을 호출자 제공 버퍼로 변환합니다. 는
반환 문자열에는 모든 특수 문자가 대체되어
PostgreSQL 문자열 리터럴로 적절하게 처리될 수 있습니다.
파서 및바이테아입력 함수. 에이
0바이트 종료도 추가됩니다. 작은따옴표
PostgreSQL 문자열 리터럴을 둘러싸야 합니다.
결과 문자열입니다.
PQntuples다음을 반환합니다.
쿼리 결과의 튜플(행) 수입니다.
int PQntuples(const PGresult *res);
PQn필드다음을 반환합니다.
쿼리의 각 행에 있는 필드(열) 수
결과.
int PQnfields(const PGresult *res);
PQfname필드를 반환토토 꽁 머니.
(열) 주어진 필드 인덱스와 연관된 이름입니다. 필드
인덱스는 0부터 시작토토 꽁 머니.
char *PQfname(const PGresult *res,
int field_index);
PQf번호다음을 반환합니다.
해당 필드와 연관된 필드(열) 인덱스
이름.
int PQfnumber(const PGresult *res,
const char *필드_이름);
주어진 이름이 일치하지 않는 경우 -1이 반환됩니다. 필드.
PQftype필드를 반환토토 꽁 머니.
주어진 필드 인덱스와 연관된 유형입니다. 정수
반환된 것은 해당 유형의 내부 코딩입니다. 필드 인덱스
0부터 시작하세요.
Oid PQftype(const PGresult *res,
int field_index);
시스템 테이블을 쿼리할 수 있습니다.pg_type이름과 속성을 얻으려면 다양한 데이터 유형.OID24517_24571src/include/catalog/pg_type.h소스에서 나무.
PQfmod다음을 반환합니다.
연관된 필드의 유형별 수정 데이터
주어진 필드 인덱스로. 필드 인덱스는 0부터 시작합니다.
int PQfmod(const PGresult *res,
int field_index);
PQfsize크기를 반환토토 꽁 머니.
해당 필드와 연관된 필드의 바이트 단위
색인. 필드 인덱스는 0부터 시작토토 꽁 머니.
int PQfsize(const PGresult *res,
int field_index);
PQfsize공간을 반환토토 꽁 머니.
데이터베이스 튜플에서 이 필드에 할당됩니다.
서버의 이진 표현 크기를 의미토토 꽁 머니.
데이터 유형. 필드가 가변적이면 -1이 반환됩니다.
크기.
PQbinaryTuples1을 반환합니다.
PGresult에 바이너리 튜플 데이터가 포함되어 있으면 0입니다.
ASCII 데이터가 포함되어 있습니다.
int PQbinaryTuples(const PGresult *res);
현재 바이너리 튜플 데이터는 다음을 통해서만 반환될 수 있습니다. 바이너리 커서에서 데이터를 추출하는 쿼리입니다.
PQgetvalue다음을 반환합니다.
a의 한 튜플(행)에 대한 단일 필드(열) 값PGresult. 튜플과 필드
인덱스는 0부터 시작토토 꽁 머니.
char* PQgetvalue(const PGresult *res,
정수 tup_num,
int field_num);
대부분의 쿼리에서 반환된 값은PQgetvalueNull 종료 문자입니다.
속성 값의 문자열 표현입니다. 하지만 만일PQbinaryTuples()는 1이고,
에서 반환된 값PQgetvalue은 내부 유형의 바이너리 표현입니다.
백엔드 서버의 형식(크기는 포함되지 않음)
단어(필드가 가변 길이인 경우). 그 다음은
데이터를 캐스팅하고 변환하는 것은 프로그래머의 책임입니다.
올바른 C 유형. 에서 반환된 포인터PQgetvalue일부인 저장소를 가리킵니다.
의PGresult구조. 하나
수정해서는 안 되며 명시적으로 복사해야 토토 꽁 머니.
그 가치가 만료된 이후에 사용될 경우 다른 저장소에 귀속됩니다.
일생 동안PGresult구조 자체.
PQgetisnull필드를 테스트토토 꽁 머니
NULL 항목의 경우. 튜플 및 필드 인덱스는 0부터 시작토토 꽁 머니.
int PQgetisnull(const PGresult *res,
정수 tup_num,
int field_num);
이 함수는 필드에 NULL이 포함되어 있으면 1, 0을 반환합니다.
null이 아닌 값이 포함된 경우. (참고하세요PQgetvalue빈 문자열을 반환합니다.
NULL 필드의 경우 널 포인터가 아닙니다.)
PQgetlength다음을 반환합니다.
필드(속성) 값의 길이(바이트)입니다. 튜플과
필드 인덱스는 0부터 시작합니다.
int PQgetlength(const PGresult *res,
정수 tup_num,
int field_num);
이것은 특정 데이터에 대한 실제 데이터 길이입니다
값, 즉 가 가리키는 객체의 크기입니다.PQgetvalue. 참고하세요
문자로 표현된 값, 이 크기는 거의 관련이 없습니다.
보고된 바이너리 크기로PQfsize.
PQprint모든 내용을 인쇄토토 꽁 머니.
튜플 및 선택적으로 속성 이름
지정된 출력 스트림.
void PQprint(FILE* fout, /* 출력 스트림 */
const PGresult *res,
const PQprintOpt *po);
구조체
pqbool 헤더; /* 출력 필드 제목과 행 개수를 인쇄합니다 */
pqbool 정렬; /* 필드 채우기 채우기 */
pqbool 표준; /* 오래된 뇌사 형식 */
pqbool html3; /* HTML 테이블 출력 */
pqbool 확장; /* 테이블 확장 */
pqbool 호출기; /* 필요한 경우 출력을 위해 호출기를 사용합니다 */
char *fieldSep; /* 필드 구분자 */
char *tableOpt; /* HTML에 삽입테이블 ...*/
문자 *캡션; /* HTML캡션*/
char **필드명; /* null로 끝나는 대체 필드 이름 배열 */
PQprintOpt;
이 기능은 이전에 다음에서 사용되었습니다.psql질의 결과를 인쇄하려면, 하지만 이것은 더 이상 그렇지 않으며 이 기능도 더 이상 작동하지 않습니다. 적극적으로 지원합니다.
PQcmd상태다음을 반환합니다.
생성된 SQL 명령의 명령 상태 문자열PGresult.
char * PQcmdStatus(const PGresult *res);
PQcmdTuples다음을 반환합니다.
SQL 명령의 영향을 받은 행 수입니다.
char * PQcmdTuples(const PGresult *res);
만약SQL토토 꽁 머니 생성된 것은PGresult이었음 INSERT, UPDATE 또는 DELETE, 다음을 포함하는 문자열을 반환합니다. 영향을 받는 행 수 명령이 무엇이든 있었다면 그렇지 않으면 빈 문자열을 반환합니다.
PQoid값다음을 반환합니다.
삽입된 행의 객체 ID(SQL명령은 다음을 삽입한 INSERT였습니다.
OID가 있는 테이블에 정확히 하나의 행이 있습니다. 그렇지 않으면,
반품InvalidOid.
Oid PQoidValue(const PGresult *res);
유형오이드그리고 상수InvalidOid다음과 같이 정의됩니다. 다음을 포함합니다.libpq헤더 파일. 둘 다 정수 유형입니다.
PQoidStatus다음을 반환합니다.
삽입된 행의 객체 ID가 있는 문자열(SQL명령은
삽입. (문자열은 다음과 같습니다.0if
INSERT가 정확히 하나의 행을 삽입하지 않았거나 대상이
테이블에는 OID가 없습니다.) 명령이
INSERT, 빈 문자열을 반환합니다.
char * PQoidStatus(const PGresult *res);
이 기능은 다음을 위해 더 이상 사용되지 않습니다.PQoid값그리고 스레드로부터 안전하지 않습니다.