윈 토토 : 문서 : 9.4 : 윈 토토 9.4.26 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.4 : 토토 사이트 순위 상태 기능 | 토토 커뮤니티 : 문서 : 9.4 : LIBPQ -C 라이브러리 | 31 장.libpq-C 라이브러리 | PostgreSQL : 문서 : 9.4 : 비동기 토토 처리 |
데이터베이스 서버에 대한 연결이 성공적으로 설정되면 여기에 설명 된 기능은 SQL 쿼리 및 토토 커뮤니티을 수행하는 데 사용됩니다..
PQEXEC
서버에 토토 커뮤니티을 제출하고 결과를 기다립니다.
pgresult *pqexec (pgconn *conn, const char *command);
a 반환pgresult포인터 또는 아마도 널 포인터. 비 널 포인터는 일반적으로 메모리 외 조건이나 서버로 토토 커뮤니티을 보낼 수없는 것과 같은 심각한 오류를 제외하고는 일반적으로 반환됩니다.pqresultstatus
함수는 오류에 대한 반환 값을 확인하기 위해 호출되어야합니다 (널 포인터의 값 포함,이 경우 반환됩니다pgres_fatal_error). 사용PQERRORMESSAGE
그러한 오류에 대한 자세한 정보를 얻으려면
토토 커뮤니티 문자열에는 여러 SQL 토토 커뮤니티 (세미콜론으로 구분)이 포함될 수 있습니다. 단일로 전송 된 여러 쿼리PQEXEC
명시 적이없는 한 전화가 단일 트랜잭션에서 처리됩니다시작/커밋쿼리 문자열에 포함 된 토토 커뮤니티을 여러 트랜잭션으로 나눕니다. 그러나 반환 된 점에 유의하십시오pgresult구조는 문자열에서 실행 된 마지막 토토 커뮤니티의 결과 만 설명합니다. 토토 커뮤니티 중 하나가 실패하면 문자열 처리가 중지되고 반환 된 문자열pgresult오류 조건을 설명합니다.
pqexecparams
SQL 토토 커뮤니티 텍스트와 별도로 매개 변수를 전달할 수있는 기능으로 서버에 토토 커뮤니티을 제출하고 결과를 기다립니다.
pgresult *pqexecparams (pgconn *conn,
pqexecparams
같아PQEXEC
, 그러나 추가 기능을 제공합니다. 매개 변수 값을 토토 커뮤니티 문자열과 별도로 지정할 수 있으며 쿼리 결과를 텍스트 또는 이진 형식으로 요청할 수 있습니다.pqexecparams
프로토콜 3.0 이상 연결에서만 지원됩니다. 프로토콜 2.0을 사용하면 실패합니다.
함수 인수는 다음과 같습니다.
토토 커뮤니티을 전송할 연결 객체.
실행될 SQL 토토 커뮤니티 문자열. 매개 변수를 사용하는 경우 토토 커뮤니티 문자열에서에 표시됩니다.$1, $211216_11222
제공되는 매개 변수 수; 배열의 길이입니다Paramtypes [], Paramvalues [], Paramlengths []및FARAMFORMATS []. (배열 포인터가 될 수 있습니다null언제NPARAMSis Zero.)
OID에 의해 매개 변수 기호에 할당 될 데이터 유형을 지정합니다. 만약에Paramtypesisnull또는 배열의 특정 요소는 0이고 서버는 무형 토토 커뮤니티에 대해 동일한 방식으로 매개 변수 기호의 데이터 유형을 주행합니다..
매개 변수의 실제 값을 지정합니다. 이 배열의 널 포인터는 해당 매개 변수가 null임을 의미합니다.
이진 형식 매개 변수의 실제 데이터 길이를 지정합니다. NULL 매개 변수 및 텍스트 형식 매개 변수에 대해 무시됩니다.
매개 변수가 텍스트인지 지정합니다 (해당 매개 변수의 배열 항목에 0을 넣음) 또는 바이너리 (해당 매개 변수의 배열 항목에 하나를 넣으십시오). 배열 포인터가 NULL 인 경우 모든 매개 변수는 텍스트 토토 커뮤니티로 추정됩니다.
이진 형식으로 전달 된 값은 백엔드에서 기대하는 내부 표현에 대한 지식이 필요합니다. 예를 들어 정수는 네트워크 바이트 순서로 전달되어야합니다.숫자값은 구현 된대로 서버 스토리지 형식에 대한 지식이 필요합니다src/backend/utils/adt/numeric.c :: numeric_send ()andsrc/backend/utils/adt/numeric.c :: numeric_recv ().
텍스트 형식으로 결과를 얻기 위해 0을 지정하거나 이진 형식으로 결과를 얻기위한 결과를 얻으십시오. (기본 프로토콜에서는 가능하지만 현재 다른 형식으로 다른 결과 열을 얻는 조항이 없습니다.)
의 주요 장점pqexecparams
OverPQEXEC
매개 변수 값이 토토 커뮤니티 문자열에서 분리 될 수 있으므로 지루하고 오류가 발생하기 쉬운 인용 및 탈출이 필요하지 않습니다..
와 달리PQEXEC
, pqexecparams
주어진 문자열에서 최대 하나의 SQL 토토 커뮤니티을 허용합니다. (세미콜론이있을 수 있지만 하나 이상의 비어 있지 않은 토토 커뮤니티은 없습니다.) 이것은 기본 프로토콜의 한계이지만 SQL 주입 공격에 대한 추가 방어로 유용성이 있습니다..
팁 :OID를 통해 매개 변수 유형을 지정하는 것은 특히 프로그램에 특정 OID 값을 하드 와이어 와이어를 원하지 않는 경우 지루합니다. 그러나 서버 자체가 매개 변수의 유형을 결정할 수 없거나 원하는 것과 다른 유형을 선택할 수없는 경우에도 그렇게하지 않을 수 있습니다.
선택 *에서 mytable에서 x = $ 1 :: bigint;에서 선택하십시오.이 힘 매개 변수$1bigint, 기본적으로와 동일한 유형으로 할당됩니다.x. 이진 형식보다 파라미터 값을 바이너리 형식으로 보낼 때는 파라미터 유형 결정을 이러한 방식으로 또는 숫자 유형 OID를 지정하여 강력히 권장됩니다. 이진 형식은 텍스트 형식보다 중복성이 적기 때문에 서버가 유형 불일치 실수를 감지 할 가능성이 적기 때문입니다..
pqprepare
주어진 매개 변수로 준비된 토토 커뮤니티문을 작성하라는 요청을 제출하고 완료를 기다립니다.
pgresult *pqprepare (pgconn *conn,
pqprepare
나중에 실행을 위해 준비된 토토 커뮤니티문을 작성합니다pqExecprepared
. 이 기능은 반복적으로 사용될 토토 커뮤니티을 반복적으로 구문 분석하고 실행할 때마다 한 번만 계획 할 수 있습니다.pqprepare
프로토콜 3.0 이상 연결에서만 지원됩니다. 프로토콜 2.0을 사용하면 실패합니다.
이 함수는 준비된 진술을 작성합니다.stmtname에서쿼리String, 단일 SQL 토토 커뮤니티을 포함해야합니다.stmtnamecan be""이름이없는 진술을 작성하려면,이 경우 기존의 이름이없는 토토 커뮤니티문이 자동으로 교체됩니다. 그렇지 않으면 토토 커뮤니티문 이름이 현재 세션에서 이미 정의 된 경우 오류입니다.$1, $211216_11222NPARAMS배열에서 유형이 사전 지정되는 매개 변수 수입니다Paramtypes []. (배열 포인터가 될 수 있습니다null언제NPARAMSis Zero.)Paramtypes []OID에 의해 매개 변수 기호에 할당 될 데이터 유형을 지정합니다. 만약에Paramtypesisnull또는 배열의 특정 요소는 0이므로 서버는 무형 문자열에 대해 동일한 방식으로 데이터 유형을 매개 변수 기호에 할당합니다. 또한 쿼리는 숫자보다 높은 매개 변수 기호를 사용할 수 있습니다.NPARAMS; 이 기호에 대해서도 데이터 유형이 추론됩니다.PQDESCREPREPARED
어떤 데이터 유형이 추론되었는지 알 수있는 수단.)
PQEXEC
, 결과는 일반적으로 a입니다.pgresult내용이 서버 측 성공 또는 실패를 나타내는 객체. 널 결과는 메모리 외부 또는 토토 커뮤니티을 전혀 보낼 수 없음을 나타냅니다.PQERRORMESSAGE
그러한 오류에 대한 자세한 정보를 얻으려면
사용하기위한 준비된 진술pqExecprepared
SQL을 실행하여 생성 할 수 있습니다PostgreSQL : 문서 : 9.4 : 무지개 토토진술. 또한 없지만libpq준비된 진술을 삭제하기위한 함수, SQL스포츠 토토 : 문서 : 9.4 : 딜 로이징그 목적으로 문을 사용할 수 있습니다.
pqExecprepared
주어진 매개 변수로 준비된 토토 커뮤니티문을 실행하라는 요청을 보내고 결과를 기다립니다.
pgresult *pqexecprepared (pgconn *conn,
pqExecprepared
같아pqexecparams
, 그러나 실행되는 토토 커뮤니티은 쿼리 문자열을 제공하는 대신 이전에 준비된 토토 커뮤니티문을 지정하여 지정됩니다. 이 기능을 사용하면 실행 될 때마다 반복적으로 사용되는 토토 커뮤니티을 한 번만 구문 분석하고 계획 할 수 있습니다.pqExecprepared
프로토콜 3.0 이상 연결에서만 지원됩니다. 프로토콜 2.0을 사용하면 실패합니다.
매개 변수는 동일합니다pqexecparams
- 준비 문의 이름이 쿼리 문자열 대신에 제공되는 것을 제외하고Paramtypes []매개 변수가 존재하지 않습니다 (준비된 토토 커뮤니티문의 매개 변수 유형이 생성 될 때 결정되었으므로 필요하지 않습니다)..
PQDESCREPREPARED
지정된 준비된 진술에 대한 정보를 얻으려는 요청을 제출하고 완료를 기다립니다.
pgresult *pqdescribeprepared (pgconn *conn, const char *stmtname);
PQDESCREPREPARED
이전에 준비된 진술에 대한 정보를 얻을 수있는 응용 프로그램이 허용됩니다.PQDESCREPREPARED
프로토콜 3.0 이상 연결에서만 지원됩니다. 프로토콜 2.0을 사용하면 실패합니다.
stmtnamecan be""또는null이름이없는 진술을 참조하려면 기존의 준비된 진술의 이름이어야합니다. 성공에, Apgresult상태pgres_command_ok반환됩니다. 기능PQNPARAMS
andPQPARAMTYPE
이것에 적용 할 수 있습니다pgresult준비된 진술의 매개 변수 및 함수에 대한 정보를 얻으려면pqnfields
, pqfname
, pqftype
등 토토 커뮤니티문의 결과 열 (있는 경우)에 대한 정보를 제공합니다.
pqdescribePortal
지정된 포털에 대한 정보를 얻기위한 요청을 제출하고 완료를 기다립니다.
pgresult *pqdescribeportal (pgconn *conn, const char *portalname);
pqdescribePortal
이전에 생성 된 포털에 대한 정보를 얻을 수있는 응용 프로그램을 허용합니다. (libpq포털에 직접 액세스 할 수는 없지만이 기능을 사용하여 A로 생성 된 커서의 속성을 검사 할 수 있습니다.커서 선언SQL 토토 커뮤니티.)pqdescribePortal
프로토콜 3.0 이상 연결에서만 지원됩니다. 프로토콜 2.0을 사용하면 실패합니다.
PortalNamecan be""또는null이름이없는 포털을 참조하려면 기존 포털의 이름이어야합니다. 성공에, Apgresult상태pgres_command_ok반환됩니다. 기능pqnfields
, pqfname
, pqftype
등을에 적용 할 수 있습니다pgresult포털의 결과 열 (있는 경우)에 대한 정보를 얻으려면
thepgresult구조는 서버에서 반환 한 결과를 캡슐화합니다.libpq애플리케이션 프로그래머는 유지 관리에주의해야합니다pgresult추상화. 아래의 액세서 기능을 사용하여의 내용을 얻으십시오.pgresult. 의 필드를 직접 참조하지 마십시오.pgresult미래에 변화를 받기 때문에 구조.
pqresultstatus
토토 커뮤니티의 결과 상태를 반환합니다.
execstatustype pqresultstatus (const pgresult *res);
pqresultstatus
다음 값 중 하나를 반환 할 수 있습니다.
서버로 전송 된 토토 커뮤니티이 비어있었습니다.
데이터를 반환하는 토토 커뮤니티의 성공적인 완료.
데이터를 반환하는 토토 커뮤니티의 성공적인 완료 (aselect또는show).
복사 (서버에서) 데이터 전송이 시작되었습니다.
(서버로) 데이터 전송이 시작되었습니다.
서버의 응답은 이해되지 않았습니다.
치명적이지 않은 오류 (통지 또는 경고)가 발생했습니다.
치명적인 오류가 발생했습니다.
복사/out (서버에서) 데이터 전송이 시작되었습니다. 이 기능은 현재 스트리밍 복제에만 사용되므로 일반 응용 프로그램에서는이 상태가 발생하지 않아야합니다.
thepgresult현재 토토 커뮤니티에서 단일 결과 튜플을 포함합니다. 이 상태는 쿼리를 위해 단일 로우 모드가 선택된 경우에만 발생합니다 (PostgreSQL : 문서화 : 9.4 : 배트맨 토토 결과 검색 row-row).
결과 상태가있는 경우pgres_tuples_ok또는pgres_single_tuple, 아래에 설명 된 함수는 쿼리에서 반환 된 행을 검색하는 데 사용될 수 있습니다. Aselect0 행을 검색하는 토토 커뮤니티은 여전히 표시됩니다pgres_tuples_ok. pgres_command_ok는 절대 행을 반환 할 수없는 토토 커뮤니티입니다 (삽입또는업데이트a반환절 등). 의 응답pgres_empty_query클라이언트 소프트웨어의 버그를 표시 할 수 있습니다.
상태의 결과pgres_nonfatal_error|PQEXEC
또는 기타 쿼리 실행 함수; 이런 종류의 결과는 대신 통지 프로세서로 전달됩니다 (참조PostgreSQL : 문서 : 9.4 : 토토 사이트 순위 처리).
pqresstatus
reture 열거 된 유형을 변환합니다pqresultstatus
상태 코드를 설명하는 문자열 상수로. 발신자는 결과를 자유롭게하지 않아야합니다.
char *pqresstatus (execstatustype status);
PQRESULTERRORMESSAGE
오류가없는 경우 토토 커뮤니티과 관련된 오류 메시지를 반환합니다.
char *pqresulterrormessage (const pgresult *res);
오류가 있으면 반환 된 문자열에는 후행 Newline이 포함됩니다. 발신자는 결과를 직접 자유롭게 해제해서는 안됩니다.pgresult핸들이 전달되었습니다PQCLEAR
.
바로 다음PQEXEC
또는pqgetresult
Call,PQERRORMESSAGE
(연결 중)는와 동일한 문자열을 반환합니다.PQRESULTERRORMESSAGE
(결과). 그러나 Apgresult파괴 될 때까지 오류 메시지를 유지하는 반면, 후속 작업이 완료되면 연결 오류 메시지가 변경됩니다. 사용PQRESULTERRORMESSAGE
특정 상태와 관련된 상태를 알고 싶을 때pgresult; 사용PQERRORMESSAGE
연결에서 최신 작업의 상태를 알고 싶을 때.
pqresulterrorfield
오류 보고서의 개별 필드를 반환합니다.
char *pqresultterrorfield (const pgresult *res, int fieldcode);
FieldCode| 오류 필드 식별자입니다. 아래에 나열된 기호를 참조하십시오.null이되면 반환됩니다pgresult는 오류 또는 경고 결과가 아니거나 지정된 필드를 포함하지 않습니다. 필드 값은 일반적으로 후행 신성을 포함하지 않습니다.pgresult핸들이 전달되었습니다PQCLEAR
.
다음 필드 코드를 사용할 수 있습니다.
심각도; 필드 내용은오류, 치명적, 또는panic(오류 메시지에서) 또는경고, 통지, 디버그, info, 또는log(통지 메시지에서) 또는이 중 하나의 현지화 된 번역. 항상 존재합니다.
오류에 대한 sqlstate 코드. SQLSTATE 코드는 발생한 오류 유형을 식별합니다.범퍼카 토토 : 문서 : 9.4 : 범퍼카 토토 범퍼카 토토 코드. 이 분야는 현지화 할 수 없으며 항상 존재합니다.
기본 인간 읽을 수있는 오류 메시지 (일반적으로 한 줄). 항상 존재합니다.
세부 사항 : 문제에 대한 자세한 내용을 가진 선택적 보조 오류 메시지. 여러 줄로 실행될 수 있습니다.
힌트 : 문제에 대해 무엇을 해야하는지 선택적 제안. 이것은 어려운 사실보다는 조언 (잠재적으로 부적절한)을 제공한다는 점에서 세부 사항과 다릅니다.
소수 정수를 포함하는 문자열은 원래 문자열에 대한 인덱스로 오류 커서 위치를 나타냅니다. 첫 번째 문자에는 색인 1이 있고 위치는 바이트가 아닌 문자로 측정됩니다.
이것은와 동일하게 정의됩니다pg_diag_statement_position필드이지만 커서 위치가 클라이언트가 제출 한 내부 토토 커뮤니티이 아닌 내부적으로 생성 된 토토 커뮤니티을 지칭 할 때 사용됩니다. 그만큼pg_diag_internal_query이 필드가 나타날 때 필드가 항상 나타납니다.
실패한 내부적으로 생성 된 토토 커뮤니티의 텍스트. 예를 들어, PL/PGSQL 함수에 의해 발행 된 SQL 쿼리 일 수 있습니다.
오류가 발생한 컨텍스트의 표시. 현재 여기에는 활성 절차 언어 기능 및 내부적으로 생성 된 쿼리의 통화 스택 트레이스 백이 포함됩니다.
오류가 특정 데이터베이스 객체와 관련된 경우 해당 객체를 포함하는 스키마의 이름 인 경우
오류가 특정 테이블과 관련된 경우 테이블 이름입니다. (테이블의 스키마 이름은 스키마 이름 필드를 참조하십시오.)
오류가 특정 테이블 열인 열의 이름과 연관된 경우 열의 이름입니다. (테이블을 식별하려면 스키마 및 테이블 이름 필드를 참조하십시오.)
오류가 특정 데이터 유형과 관련된 경우 데이터 유형의 이름입니다. (데이터 유형의 스키마 이름은 스키마 이름 필드를 참조하십시오.)
오류가 특정 제약 조건 인 경우 제약 조건의 이름입니다. 관련 테이블 또는 도메인에 대해 위에 나열된 필드를 참조하십시오.
오류가보고 된 소스 코드 위치의 파일 이름.
오류가보고 된 소스 코드 위치의 줄 번호.
오류를보고하는 소스 코드 함수의 이름.
참고 :스키마 이름, 테이블 이름, 열 이름, 데이터 유형 이름 및 제약 이름의 필드는 제한된 수의 오류 유형에 대해서만 제공됩니다. 보다범퍼카 토토 : 문서 : 9.4 : 범퍼카 토토 범퍼카 토토 코드. 이들 필드의 존재가 다른 필드의 존재를 보장한다고 가정하지 마십시오.
클라이언트는 요구 사항을 충족시키기 위해 표시된 정보 서식을 담당합니다. 특히 필요에 따라 긴 줄을 끊어야합니다.
내부적으로 생성 된 오류libpq심각도와 기본 메시지는 있지만 일반적으로 다른 필드는 없습니다. Pre-3.0 Protocol 서버에서 반환 한 오류에는 심각도 및 기본 메시지, 때로는 세부 메시지가 포함되지만 다른 필드는 없습니다.
오류 필드는에서만 사용할 수 있습니다.pgresult객체, 아님pgconn개체; 없음PQERRORFIELD
기능.
PQCLEAR
a를 해제합니다pgresult. 모든 토토 커뮤니티 결과는를 통해 해방되어야합니다.PQCLEAR
더 이상 필요하지 않은 경우.
void pqclear (pgresult *res);
당신은 a를 유지할 수 있습니다.pgresult필요한만큼 오랫동안 물체; 새 토토 커뮤니티을 발행하거나 연결을 닫을 때도 사라지지 않습니다.PQCLEAR
. 이렇게하지 않으면 응용 프로그램에서 메모리 누출이 발생합니다.
이 기능은 a에서 정보를 추출하는 데 사용됩니다.pgresult성공적인 쿼리 결과를 나타내는 객체 (즉, 상태가있는pgres_tuples_ok또는pgres_single_tuple). 또한 성공적인 설명 작업에서 정보를 추출하는 데 사용될 수 있습니다. 설명의 결과는 쿼리의 실제 실행이 제공하는 것과 동일한 열 정보를 모두 가지고 있지만 행이 없습니다.
pqntuples
쿼리 결과에서 행 수 (튜플)를 반환합니다. (pgresult개체는 이상으로 제한됩니다.int_max행, anint결과는 충분합니다.)
int pqntuples (const pgresult *res);
pqnfields
쿼리 결과의 각 행에서 열 (필드) 수를 반환합니다.
int pqnfields (const pgresult *res);
pqfname
주어진 열 번호와 관련된 열 이름을 반환합니다. 열 숫자는 0에서 시작합니다. 발신자는 결과를 직접 자유롭게하지 않아야합니다.pgresult핸들이 전달되었습니다PQCLEAR
.
char *pqfname (const pgresult *res,
null열 번호가 범위를 벗어난 경우 반환됩니다.
pqfnumber
주어진 열 이름과 관련된 열 번호를 반환합니다.
int pqfnumber (const pgresult *res,
28599_28658
주어진 이름은 SQL 토토 커뮤니티에서 식별자처럼 취급됩니다. 예를 들어 SQL 토토 커뮤니티에서 생성 된 쿼리 결과가 주어지면
FOO로 1, 2 "Bar"; 선택
결과가 있습니다 :
pqfname (res, 0)foopqfname (res, 1)barpqfnumber (res, "foo")0pqfnumber (res, "foo")0pqfnumber (res, "bar")-1pqfnumber (res, "\"bar \ "")1
pqftable
주어진 열이 가져온 테이블의 OID를 반환합니다. 열 번호는 0에서 시작합니다.
OID pqftable (const pgresult *res,
Invalidoid열 번호가 범위를 벗어난 경우 또는 지정된 열이 테이블 열에 대한 간단한 참조가 아니거나 Pre-3.0 프로토콜을 사용할 때 반환됩니다. 시스템 테이블을 쿼리 할 수 있습니다pg_class참조되는 테이블이 정확히 확인하려면.
유형OID및 상수Invalidoid를 포함시킬 때 정의됩니다libpq헤더 파일. 둘 다 정수 유형이 될 것입니다.
pqftablecol
지정된 쿼리 결과 열을 구성하는 열의 열 번호 (테이블 내)를 반환합니다. Query-Result 열 숫자는 0에서 시작하지만 테이블 열에는 0이 아닌 숫자가 있습니다.
int pqftablecol (const pgresult *res,
열 번호가 범위를 벗어난 경우 또는 지정된 열이 테이블 열에 대한 간단한 참조가 아니거나 Pre-3.0 프로토콜을 사용할 때 0이 아닌 경우 0이 반환됩니다..
pqfformat
주어진 열의 형식을 나타내는 형식 코드를 반환합니다. 열 번호는 0에서 시작합니다.
int pqfformat (const pgresult *res,
형식 코드 0은 텍스트 데이터 표현을 나타내고 형식 코드 1은 이진 표현을 나타냅니다. (기타 코드는 향후 정의를 위해 예약되어 있습니다.)
pqftype
주어진 열 번호와 관련된 데이터 유형을 반환합니다. 반환 된 정수는 유형의 내부 OID 번호입니다.
OID pqftype (const pgresult *res,
시스템 테이블을 쿼리 할 수 있습니다pg_type다양한 데이터 유형의 이름과 속성을 얻습니다. 그만큼OID내장 데이터 유형 중 파일에 정의되어 있습니다src/include/catalog/pg_type.h소스 트리에서.
pqfmod
주어진 열 번호와 관련된 열의 유형 수정자를 반환합니다. 열 번호는 0에서 시작합니다.
int pqfmod (const pgresult *res,
수정 자 값의 해석은 유형과 관련이 있습니다. 일반적으로 정밀 또는 크기 제한을 나타냅니다."정보 없음". 대부분의 데이터 유형은 수정자를 사용하지 않으며,이 경우 값은 항상 -1입니다.
pqfsize
주어진 열 번호와 관련된 열의 바이트로 크기를 반환합니다. 열 번호는 0에서 시작합니다.
int pqfsize (const pgresult *res,
pqfsize
데이터베이스 행 에이 열에 할당 된 공간을 반환합니다. 즉, 서버의 데이터 유형의 내부 표현 크기와 함께. (따라서 클라이언트에게는 실제로 유용하지 않습니다.) 음수 값은 데이터 유형이 가변 길이임을 나타냅니다.
pqbinaryTuples
반환 1pgresult텍스트 데이터가 포함 된 경우 이진 데이터와 0이 포함되어 있습니다.
int pqbinaryTuples (const pgresult *res);
이 함수는 더 이상 사용되지 않습니다 (COPY), 단일이 가능하기 때문에pgresult일부 열에 텍스트 데이터를 포함하고 다른 열에는 이진 데이터를 포함합니다.pqfformat
선호됩니다.pqbinaryTuples
결과의 모든 열이 바이너리 (형식 1) 인 경우에만 반환합니다..
pqgetValue
a의 단일 필드 값을 반환합니다pgresult. 행 및 열 숫자는 0에서 시작합니다. 발신자는 결과를 직접 자유롭게하지 않아야합니다.pgresult핸들이 전달되었습니다PQCLEAR
.
char *pqgetValue (const pgresult *res,
텍스트 형식의 데이터의 경우pqgetValue
는 필드 값의 무효 문자 문자열 표현입니다. 이진 형식의 데이터의 경우 값은 데이터 유형에 의해 결정된 이진 표현에 있습니다.TypSend
andtypreceive
함수. (이 값은 실제로이 경우에도 제로 바이트가 이어 지지만, 값이 내장 된 널을 포함 할 가능성이 있기 때문에 일반적으로 유용하지 않습니다.)
필드 값이 null이면 빈 문자열이 반환됩니다. 보다PQGETISNULL
널 값을 빈 스트링 값과 구별하려면
포인터가 반환pqgetValue
pgresult구조. 하나는 지적한 데이터를 수정해서는 안되며, 데이터를 다른 스토리지에 명시 적으로 복사해야합니다.pgresult구조 자체.
PQGETISNULL
널 값에 대한 필드를 테스트합니다. 행 및 열 숫자는 0에서 시작합니다.
int pqgetisnull (const pgresult *res,
이 함수는 필드가 NULL 인 경우 1을 반환하고 NULL 값이없는 경우 0을 반환합니다. (pqgetValue
널 필드를 위해 널 포인터가 아닌 빈 문자열을 반환합니다.)
pqgetLength
바이트의 필드 값의 실제 길이를 반환합니다. 행 및 열 숫자는 0에서 시작합니다.
int pqgetlength (const pgresult *res,
이것은 특정 데이터 값의 실제 데이터 길이, 즉 객체의 크기입니다.pqgetValue
. 텍스트 데이터 형식의 경우 이것은와 동일합니다.strlen ()
. 이진 형식의 경우 필수 정보입니다.아님의존pqfsize
실제 데이터 길이를 얻으려면.
PQNPARAMS
준비된 문의 매개 변수 수를 반환합니다.
int pqnparams (const pgresult *res);
이 기능은 결과를 검사 할 때만 유용합니다PQDESCREPREPARED
. 다른 유형의 쿼리의 경우 0이 반환됩니다.
PQPARAMTYPE
표시된 토토 커뮤니티문 매개 변수의 데이터 유형을 반환합니다. 매개 변수 번호는 0에서 시작합니다.
OID PQPARAMTYPE (const pgresult *res, int param_number);
이 기능은 결과를 검사 할 때만 유용합니다PQDESCREPREPARED
. 다른 유형의 쿼리의 경우 0이 반환됩니다.
pqprint
모든 행과 선택적으로 열 이름을 지정된 출력 스트림에 인쇄합니다.
void pqprint (파일 *fout, / *출력 스트림 * /
이 기능은 이전에에 사용되었습니다.PSQL쿼리 결과를 인쇄하려면 더 이상 그렇지 않습니다. 모든 데이터가 텍스트 형식이라고 가정합니다.
이 기능은에서 다른 정보를 추출하는 데 사용됩니다.pgresult개체.
pqcmdstatus
생성 된 SQL 토토 커뮤니티에서 토토 커뮤니티 상태 태그를 반환합니다pgresult.
char *pqcmdstatus (pgresult *res);
일반적으로 이것은 토토 커뮤니티의 이름 일 뿐이지 만 처리 된 행 수와 같은 추가 데이터가 포함될 수 있습니다. 발신자는 결과를 직접 자유롭게 해제해서는 안됩니다.pgresult핸들이 전달되었습니다PQCLEAR
.
pqcmdtuples
SQL 토토 커뮤니티의 영향을받는 행 수를 반환합니다.
char *pqcmdtuples (pgresult *res);
이 함수는의 영향을받는 행 수를 포함하는 문자열을 반환합니다SQLpgresult. 이 기능은 a의 실행 후에 만 사용할 수 있습니다.select, 테이블 작성, 삽입, 업데이트, 삭제, 움직임, fetch, 또는COPY진술 또는 anexecute삽입, 업데이트, 또는삭제진술. 를 생성 한 토토 커뮤니티이 있다면pgresult다른 것이 었습니다.pqcmdtuples
빈 문자열을 반환합니다. 발신자는 반환 값을 직접 자유롭게하지 않아야합니다.pgresult핸들이 전달되었습니다PQCLEAR
.
pqoidvalue
삽입 된 행의 OID를 반환합니다.SQL토토 커뮤니티은삽입OID가있는 테이블에 정확히 하나의 행을 삽입하거나execute적합한 쿼리의삽입진술. 그렇지 않으면이 함수가 반환됩니다Invalidoid. 이 기능도 반환됩니다Invalidoid테이블에 영향을받는 경우삽입토토 커뮤니티문은 OID를 포함하지 않습니다.
OID pqoidValue (const pgresult *res);
pqoidstatus
이 기능은에 찬성하여 더 이상 사용되지 않습니다.pqoidvalue
그리고 스레드-안전이 아닙니다. 삽입 된 행의 OID가있는 문자열을 반환하고pqoidvalue
OID 값을 반환합니다.
char *pqoidstatus (const pgresult *res);
PQESCAPELITERAL
char *pqescapeliteral (pgconn *conn, const char *str, size_t 길이);
PQESCAPELITERAL
SQL 토토 커뮤니티 내에서 사용하기 위해 문자열을 이사합니다. 이것은 SQL 토토 커뮤니티에서 데이터 값을 문자 그대로 상수로 삽입 할 때 유용합니다.PQESCAPELITERAL
이 작업을 수행합니다.
PQESCAPELITERAL
탈출 한 버전의를 반환합니다.str메모리의 매개 변수와 함께 할당malloc ()
. 이 메모리는를 사용하여 해제되어야합니다.pqfreemem ()
결과가 더 이상 필요하지 않은 경우. 종료 제로 바이트는 필요하지 않으며 계산해서는 안됩니다.길이. (종료 제로 바이트가 전에 발견되면길이바이트가 처리 됨,PQESCAPELITERAL
0에서 멈 춥니 다. 그러므로 행동은 오히려strncpy
.) 리턴 토토 커뮤니티에는 모든 특수 문자가 교체되어PostgreSQL토토 커뮤니티 리터럴 파서. 종료 제로 바이트도 추가됩니다.PostgreSQLString Literals는 결과 토토 커뮤니티에 포함되어 있습니다.
on Error,PQESCAPELITERAL
반환null그리고 적절한 메시지가에 저장됩니다.conn개체.
팁 :신뢰할 수없는 소스에서받은 문자열을 처리 할 때 적절한 탈출을하는 것이 특히 중요합니다. 그렇지 않으면 보안 위험이 있습니다 : 당신은에 취약합니다"SQL 주입"원치 않는 SQL 토토 커뮤니티이 데이터베이스에 공급되는 공격.
데이터 값이 별도의 매개 변수로 전달 될 때 탈출하는 것은 필요하거나 정확하지 않다는 점에 유의하십시오.pqexecparams
또는 그 형제 루틴.
PQESCAPEINDIFIER
char *pqescapeidentifier (pgconn *conn, const char *str, size_t 길이);
PQESCAPEINDIFIER
테이블, 열 또는 함수 이름과 같은 SQL 식별자로 사용하기 위해 문자열을 이사합니다. 이는 사용자가 제공 한 식별자가 SQL 파서에 의해 식별자의 일부로 해석되지 않는 특수 문자를 포함 할 수 있거나 식별자가 케이스를 보존 해야하는 대문자 문자를 포함 할 수있는 경우에 유용합니다.
PQESCAPEINDIFIER
|str매개 변수가 할당 된 메모리에서 SQL 식별자로 탈출했습니다malloc ()
. 이 메모리는를 사용하여 해제되어야합니다.pqfreemem ()
결과가 더 이상 필요하지 않은 경우. 종료 제로 바이트는 필요하지 않으며 계산해서는 안됩니다.길이. (종료 제로 바이트가 전에 발견되면길이바이트가 처리 됨,PQESCAPEINDIFIER
0에서 멈 춥니 다. 그러므로 행동은 오히려strncpy
.) 반환 문자열에는 모든 특수 문자가 교체되어 SQL 식별자로 올바르게 처리되도록합니다. 종료 제로 바이트도 추가됩니다.
on Error,PQESCAPEINDIFIER
반환null그리고 적절한 메시지가에 저장됩니다.conn개체.
팁 :문자열 리터럴과 마찬가지로 SQL 주입 공격을 방지하려면 신뢰할 수없는 소스로부터 수신되면 SQL 식별자를 피해야합니다..
PQESCAPESTRINGCONN
SIZE_T PQESCAPESTRINGCONN (PGCONN *CONN,
PQESCAPESTRINGCONN
끈 리터럴에 빠져PQESCAPELITERAL
. 같지 않은PQESCAPELITERAL
, 발신자는 적절한 크기의 버퍼를 제공합니다. 뿐만 아니라,PQESCAPESTRINGCONN
주변을 둘러싼 단일 인용문을 생성하지 않습니다PostgreSQL문자열 리터럴; 결과가 삽입 된 SQL 토토 커뮤니티에 제공되어야합니다.From탈출 할 토토 커뮤니티의 첫 번째 문자를 가리 킵니다.길이매개 변수는이 토토 커뮤니티의 바이트 수를 제공합니다. 종료 제로 바이트는 필요하지 않으며 계산해서는 안됩니다.길이. (종료 제로 바이트가 전에 발견되면길이바이트가 처리 됨,PQESCAPESTRINGCONN
0에서 멈 춥니 다. 그러므로 행동은 오히려strncpy
.) to|길이, 그렇지 않으면 동작이 정의되지 않습니다. 행동이 마찬가지로 행동이 정의되지 않습니다toandFrom토토 커뮤니티 중첩.
인 경우오류매개 변수가 아닙니다null,*오류는 성공시 0으로 설정되어 오류가 발생하지 않습니다. 현재 가능한 오류 조건은 소스 문자열에서 유효하지 않은 멀티 바이트 인코딩을 포함합니다.conn객체, 여부오류isnull.
PQESCAPESTRINGCONN
작성된 바이트 수를 반환합니다to, 종료 제로 바이트를 포함하지 않음
PQESCAPESTRING
PQESCAPESTRING
|PQESCAPESTRINGCONN
.
SIZE_T PQESCAPESTRING (char *to, const char *from, size_t 길이);
유일한 차이점PQESCAPESTRINGCONN
PQESCAPESTRING
취하지 않습니다pgconn또는오류매개 변수. 이 때문에 연결 속성 (예 : 문자 인코딩)에 따라 동작을 조정할 수 없으므로잘못된 결과를 줄 수 있습니다. 또한 오류 조건을보고 할 방법이 없습니다.
PQESCAPESTRING
하나만 작동하는 클라이언트 프로그램에서 안전하게 사용할 수 있습니다PostgreSQL한 번에 연결 (이 경우 알아야 할 사항을 찾을 수 있습니다"무대 뒤에서"). 다른 맥락에서 그것은 보안 위험이며에 찬성하여 피해야합니다.PQESCAPESTRINGCONN
.
PQESCAPEBYTEACONN
유형과 함께 SQL 토토 커뮤니티 내에서 사용하기 위해 이진 데이터를 빠져 나갑니다BYTEA. 와 마찬가지로PQESCAPESTRINGCONN
, 이것은 SQL 토토 커뮤니티 문자열에 데이터를 삽입 할 때만 사용됩니다.
부호없는 char *pqescapebyteaconn (pgconn *conn,
A의 일부로 사용될 때 특정 바이트 값을 피해야합니다BYTEA문자 그대로SQL진술.PQESCAPEBYTEACONN
16 진수 인코딩 또는 백 슬래시 탈출을 사용하여 바이트를 이스케이프합니다. 보다섹션 8.4자세한 내용은
theFrom파라미터는 탈출 할 토토 커뮤니티의 첫 바이트를 가리 며from_length매개 변수는이 바이너리 스트링에서 바이트 수를 제공합니다. (종료 제로 바이트는 필요하거나 계산되지 않습니다.)to_length매개 변수는 결과적인 탈출 된 문자열 길이를 유지하는 변수를 가리 킵니다. 이 결과 문자열 길이는 결과의 종료 제로 바이트가 포함됩니다.
PQESCAPEBYTEACONN
탈출 한 버전의를 반환합니다.From메모리에 할당 된 매개 변수 바이너리 스트링malloc ()
. 이 메모리는를 사용하여 해제되어야합니다.pqfreemem ()
결과가 더 이상 필요하지 않은 경우. 반환 문자열에는 모든 특수 문자가 교체되어에 의해 올바르게 처리 될 수 있습니다.PostgreSQL토토 커뮤니티 리터럴 파서 및BYTEA입력 함수. 종료 제로 바이트도 추가됩니다.PostgreSQLString Literals는 결과 토토 커뮤니티의 일부가 아닙니다.
오류에서는 널 포인터가 반환되고 적절한 오류 메시지가에 저장됩니다.conn개체. 현재 유일한 오류는 결과 문자열에 대한 메모리가 충분하지 않습니다.
PQESCAPEBYTEA
PQESCAPEBYTEA
|PQESCAPEBYTEACONN
.
부호없는 char *pqescapebytea (const unsigned char *from,
유일한 차이점PQESCAPEBYTEACONN
PQESCAPEBYTEA
apgconn매개 변수. 이 때문에PQESCAPEBYTEA
싱글을 사용하는 클라이언트 프로그램에서만 안전하게 사용할 수 있습니다PostgreSQL한 번에 연결 (이 경우 알아야 할 사항을 찾을 수 있습니다"무대 뒤에서"). 그것잘못된 결과를 줄 수 있습니다여러 데이터베이스 연결을 사용하는 프로그램에 사용되는 경우 (사용PQESCAPEBYTEACONN
그러한 경우).
PQUNESCAPEBYTEA
이진 데이터의 토토 커뮤니티 표현을 이진 데이터로 변환합니다 - 반대PQESCAPEBYTEA
. 검색 할 때 필요합니다BYTEA텍스트 형식의 데이터이지만 이진 형식으로 검색 할 때는 그렇지 않습니다.
부호없는 char *pqunescapebytea (const unsigned char *from, size_t *to_length);
theFrom매개 변수는와 같은 토토 커뮤니티을 가리 킵니다pqgetValue
A에 적용되는 시점BYTEA열.PQUNESCAPEBYTEA
이 문자열 표현을 이진 표현으로 변환합니다. 와 함께 할당 된 버퍼에 대한 포인터를 반환합니다.malloc ()
, 또는null오류 중에 버퍼의 크기를 넣습니다to_length. 결과는를 사용하여 해제되어야합니다.PQFREEMEM
더 이상 필요하지 않은 경우.
이 변환은 정확히 반대가 아닙니다PQESCAPEBYTEA
, 토토 커뮤니티이 예상되지 않기 때문에"탈출"에서받은 경우pqgetValue
. 특히 이것은 토토 커뮤니티 인용 고려 사항이 필요하지 않으며 A가 필요하지 않다는 것을 의미합니다.pgconn매개 변수.