libpq이것은C응용프로그램 프로그래머 인터페이스PostgreSQL. libpq는 라이브러리 함수 집합입니다. 클라이언트 프로그램이 쿼리를에 전달할 수 있도록 허용PostgreSQL백엔드 서버를 사용하고 이 쿼리의 결과입니다.
libpq또한 기본입니다 기타 여러 엔진PostgreSQL다음을 포함한 애플리케이션 인터페이스 C++, Perl, Python, Tcl 및ECPG. 그래서 일부 측면은libpq14141_14231섹션 28.11, 섹션 28.12그리고섹션 28.14행동을 설명하세요. 다음을 사용하는 모든 애플리케이션의 사용자에게 표시됩니다.libpq.
몇 가지 짧은 프로그램이 이 장의 끝에 포함되어 있습니다. (PostgreSQL : 문서 : 8.1 : 젠 토토 프로그램) 방법을 보여줍니다. 다음을 사용하는 프로그램을 작성하세요.libpq. 또한 다음과 같은 몇 가지 완전한 예가 있습니다.libpq디렉토리의 응용프로그램src/테스트/예제소스 코드에서 분포.
다음을 사용하는 클라이언트 프로그램libpq헤더 파일을 포함해야 함libpq-fe.h다음과 연결되어야 합니다.libpq도서관.
다음 함수는 연결을 처리합니다.포스트그레SQL백엔드 서버. 안
응용프로그램은 여러 백엔드 연결을 열어둘 수 있습니다.
한 번에. (그렇게 하는 한 가지 이유는 둘 이상의
데이터베이스.) 각 연결은 다음과 같이 표시됩니다.PGconn함수에서 얻은 객체PQconnectdb또는PQsetdb로그인. 이러한 기능은
아마도 거기에 있지 않는 한 항상 null이 아닌 객체 포인터를 반환합니다.
할당하기에도 메모리가 너무 적습니다.PGconn객체. 그만큼PQ상태함수를 호출하여 확인해야 합니다.
쿼리가 수행되기 전에 무지개 토토이 성공적으로 이루어졌는지 여부
무지개 토토 개체를 통해 전송됩니다.
PQconnectdb데이터베이스 서버에 새로운 연결을 만듭니다.
PGconn *PQconnectdb(const char *conninfo);
이 함수는 다음을 사용하여 새 데이터베이스 연결을 엽니다.
문자열에서 가져온 매개변수콘인포. 같지 않은PQsetdb로그인아래, 매개변수 세트
함수 서명을 변경하지 않고 확장할 수 있습니다.
따라서 이 함수(또는 비차단 유사 함수)를 사용하세요.PQconnectStart그리고PQconnectPoll)이 선호됩니다.
새로운 애플리케이션 프로그래밍을 위해.
모든 기본값을 사용하려면 전달된 문자열이 비어 있을 수 있습니다. 매개변수 또는 하나 이상의 매개변수를 포함할 수 있습니다. 공백으로 구분된 설정입니다. 각 매개변수 설정 형식입니다.키워드 = 값. 등호 주위의 공백은 선택 사항입니다. 작성하려면 빈 값 또는 공백이 포함된 값은 둘러쌉니다. 작은따옴표로 묶습니다(예:키워드 = '값'. 작은따옴표와 백슬래시 값은 백슬래시로 이스케이프되어야 합니다. 즉,\'그리고\\.
현재 인식되는 매개변수 키워드는 다음과 같습니다:
연결할 호스트의 이름.슬래시로 시작하면 대신 Unix 도메인 통신을 지정합니다. TCP/IP 통신; 값은 이름입니다. 소켓 파일이 저장되는 디렉토리입니다. 그만큼 다음 경우의 기본 동작호스트지정되지 않은 것은 Unix 도메인에 무지개 토토하는 것입니다 소켓in/tmp(또는 다른 소켓 다음과 같은 경우 디렉토리가 지정되었습니다.PostgreSQL건축되었습니다). ~에 Unix 도메인 소켓이 없는 시스템, 기본값 에 무지개 토토하는 것입니다.로컬호스트.
연결할 호스트의 숫자 IP 주소입니다. 이것 표준 IPv4 주소 형식이어야 합니다. 예를 들어,172.28.40.9. 만약 당신의 기기가 IPv6을 지원하면 IPv6도 사용할 수 있습니다. 구애. TCP/IP 통신은 항상 다음과 같은 경우에 사용됩니다. 비어 있지 않은 문자열이 이에 대해 지정되었습니다. 매개변수입니다.
사용 중hostaddr대신 의호스트허용합니다 호스트 이름 조회를 피하기 위한 애플리케이션입니다. 시간 제약이 있는 애플리케이션에서는 중요합니다. 그러나 Kerberos 인증에는 호스트가 필요합니다. 이름. 따라서 다음이 적용됩니다: If호스트없이 지정됨hostaddr, 호스트 이름 조회가 발생합니다. 만약에hostaddr없이 지정됨호스트, 값은hostaddr원격 주소를 제공합니다. Kerberos를 사용하는 경우 호스트 이름을 얻기 위해 역방향 이름 쿼리가 발생합니다. Kerberos의 경우. 둘 다인 경우호스트그리고호스트주소있습니다 지정됨, 값은호스트주소원격 주소를 제공합니다. 값은호스트입니다 Kerberos를 사용하지 않는 한 무시됩니다. 해당 값은 Kerberos 인증에 사용됩니다. (다음과 같은 경우 인증이 실패할 수 있으니 주의하세요.libpq이 전달되었습니다 머신의 이름이 아닌 호스트 이름호스트주소.) 또한,호스트대신호스트주소다음에 익숙합니다. 연결을 식별합니다~/.pgpass(참조섹션 28.12).
호스트 이름이나 호스트 주소가 없으면,libpq연결됩니다 로컬 Unix 도메인 소켓을 사용합니다. 아니면 기계에서 Unix 도메인 소켓이 없으면 다음을 시도합니다. 연결하다로컬호스트.
데이터베이스 이름. 기본값은 다음과 같습니다. 사용자 이름입니다.
포스트그레SQL사용자 연결할 이름입니다. 기본값은 운영 체제를 실행하는 사용자의 운영 체제 이름 애플리케이션.
서버에서 요구할 경우 사용할 비밀번호 비밀번호 인증입니다.
최대 연결 대기 시간(초)(쓰기 10진수 문자열로). 0 또는 지정되지 않음 무한정 기다리라는 뜻이다. 권장하지 않습니다 2초 미만의 시간 제한을 사용하세요.
다음으로 보낼 명령줄 옵션 섬기는 사람.
무시됨(이전에는 보낼 위치를 지정했습니다.) 서버 디버그 출력).
이 옵션은 무엇을 사용할지 여부를 결정합니다. 우선순위 anSSL무지개 토토이 서버와 협상됩니다. 네 가지 모드가 있습니다:비활성화다음만 시도합니다 암호화되지 않음SSL무지개 토토;허용할 것이다 협상, 먼저 비-를 시도합니다.SSL무지개 토토, 그렇다면 그렇다면 실패, 시도 중SSL무지개 토토;선호(기본값)이 협상합니다. 먼저 시도해 보세요.SSL무지개 토토, 그렇다면 그렇다면 실패, 일반 비- 시도SSL무지개 토토;요구한 번만 시도하겠습니다SSL무지개 토토.
만약PostgreSQL옵션을 사용하여 SSL 지원 없이 컴파일됩니다.요구다음을 일으킬 것입니다 오류, 동안 옵션허용그리고선호될 것이다 받아들여졌지만libpq실제로는 시도하지 않을 것입니다SSL무지개 토토.
이 옵션은 다음을 위해 더 이상 사용되지 않습니다.sslmode설정.
1로 설정하면,SSL서버 연결이 필수(이것은 다음과 같습니다.sslmode 요구). libpq그러면 거절할 것입니다 서버가 승인하지 않으면 무지개 토토하십시오.SSL무지개 토토. 0(기본값)으로 설정하면,libpq협상할 것입니다. 서버와의 무지개 토토 유형(동등함sslmode 선호). 이 옵션은 다음과 같은 경우에 사용 가능PostgreSQL다음으로 컴파일됩니다. SSL 지원.
인증 시 사용할 Kerberos 서비스 이름 Kerberos 5를 사용합니다. 서비스 이름과 일치해야 합니다. Kerberos에 대한 서버 구성에 지정됨 인증에 성공합니다. (또한 참조섹션 20.2.3.)
추가 매개변수에 사용할 서비스 이름입니다. 서비스 이름을 지정합니다.pg_service.conf그렇습니다 추가 연결 매개변수. 이를 통해 서비스 이름만 지정하는 애플리케이션 연결 매개변수를 중앙에서 관리할 수 있습니다. 보다PostgreSQL : 문서 : 8.1 : 토토.
매개변수가 지정되지 않은 경우, 해당 환경 변수(참조섹션 28.11)이 확인되었습니다. 만약 환경 변수도 설정되지 않은 경우 표시된 기본 제공 기본값이 사용됩니다.
PQsetdb로그인데이터베이스 서버에 새로운 연결을 만듭니다.
PGconn *PQsetdbLogin(const char *pghost,
const char *pgport,
const char *pgoptions,
const char *pgtty,
const char *db이름,
const char *로그인,
const char *pwd);
이것은 이전 버전입니다PQconnectdb고정 세트 포함
매개변수. 제외하고는 동일한 기능을 가지고 있습니다.
누락된 매개변수는 항상 기본값을 사용합니다.
쓰다NULL또는 다음에 대한 빈 문자열
고정 매개변수 중 하나
기본값입니다.
PQsetdb데이터베이스 서버에 새로운 연결을 만듭니다.
PGconn *PQsetdb(char *pghost,
char *pgport,
char *pgoptions,
문자 *pgtty,
char *dbName);
이것은 호출하는 매크로입니다PQsetdb로그인에 대한 널 포인터 포함로그인그리고비밀번호매개변수. 다음을 위해 제공됩니다.
아주 오래된 프로그램과의 하위 호환성.
PQconnectStartPQconnectPoll만들다 비차단 방식으로 데이터베이스 서버에 연결 방법.
PGconn *PQconnectStart(const char *conninfo);
PostgresPollingStatusType PQconnectPoll(PGconn *conn);
이 두 함수는 무지개 토토을 여는 데 사용됩니다.
애플리케이션의 스레드가
그렇게 하는 동안 원격 I/O에서는 실행이 차단되지 않습니다.
이 접근 방식의 요점은 I/O가 완료될 때까지 기다린다는 것입니다.
완료는 애플리케이션의 메인 루프에서 발생할 수 있습니다.
안쪽보다PQconnectdb이므로 애플리케이션은
이 작업을 다른 작업과 병행하여 관리
활동.
데이터베이스 연결은 매개변수를 사용하여 이루어졌습니다.
문자열에서 가져옴콘인포,
전달됨PQconnectStart.
이 문자열은 위에서 설명한 것과 동일한 형식입니다.PQconnectdb.
둘 다 아님PQconnectStart아니요PQconnectPoll할 것이다
여러 제한 사항이 충족되는 한 차단됩니다.
그호스트주소그리고호스트매개변수가 사용됨
해당 이름과 역방향 이름을 확인하기 위해 적절하게
쿼리는 이루어지지 않습니다. 이들 문서를 참조하세요.
아래의 매개변수PQconnectdb자세한 내용은 위를 참조하세요.
부르신다면PQtrace,
추적하는 스트림 객체가
차단하지 않습니다.
소켓이 적절한 위치에 있는지 확인하세요
전화하기 전 상태PQconnectPoll, 설명대로
아래에.
비차단 연결 요청을 시작하려면 다음을 호출하세요.conn = PQconnectStart("connection_info_string"). 만약에콘null이면libpq할당할 수 없습니다.
새로운PGconn구조.
그렇지 않으면 유효한PGconn포인터가 반환됩니다(아직 유효한 포인터를 나타내지는 않지만).
데이터베이스에 연결). 돌아오는 길에PQconnectStart, 전화상태 = PQ상태(conn). 만약에상태같음CONNECTION_BAD, PQconnectStart실패했습니다.
만약PQconnectStart성공, 다음 단계는 설문 조사입니다.libpq그래서 그것은 계속될 수 있습니다
무지개 토토 순서. 사용PQsocket(콘)설명자를 얻으려면
데이터베이스 연결의 기본 소켓입니다. 고리
따라서: 만약PQconnectPoll(conn)마지막 반환PGRES_POLLING_READING, 다음까지 기다리세요
소켓을 읽을 준비가 되었습니다(다음으로 표시됨).선택(), 설문조사()또는 유사한 시스템 기능).
그럼 전화하세요PQconnectPoll(conn)다시. 거꾸로,
만약에PQconnectPoll(conn)마지막
반환됨PGRES_POLLING_WRITING,
소켓이 쓸 준비가 될 때까지 기다린 다음 호출하세요.PQconnectPoll(conn)다시.
아직 전화하지 않으셨다면PQconnectPoll, 즉, 바로 다음
전화하세요PQconnectStart,
마지막으로 반환된 것처럼 행동합니다.PGRES_POLLING_WRITING. 이 루프를 계속하세요
까지PQconnectPoll(conn)반환PGRES_POLLING_FAILED,
연결 절차가 실패했음을 나타내는 경우, 또는PGRES_POLLING_OK, 이는 다음을 나타냅니다.
연결이 성공적으로 이루어졌습니다.
연결 중 언제든지 상태는
전화를 걸어 연결을 확인할 수 있습니다PQ상태. 이것이 주어진다면CONNECTION_BAD, 그러면 연결
절차가 실패했습니다. 만약 준다면CONNECTION_OK그러면 연결은 다음과 같습니다.
준비가 된. 이 두 상태 모두에서 동일하게 감지할 수 있습니다.
반환 값PQconnectPoll, 위에 설명되어 있습니다. 다른
상태는 실행 중에(그리고 실행 중에만) 발생할 수도 있습니다.
비동기 연결 절차. 이는 다음을 나타냅니다.
연결 절차의 현재 단계이며
예를 들어 사용자에게 피드백을 제공하는 데 유용합니다. 이것들
상태는 다음과 같습니다:
무지개 토토이 이루어지기를 기다리는 중입니다.
무지개 토토 정상; 보내기를 기다리고 있습니다.
서버의 응답을 기다리는 중입니다.
인증을 받았습니다. 백엔드를 기다리는 중 시작부터 끝까지.
SSL 암호화 협상 중.
환경 기반 매개변수 협상 중 설정.
이 상수는 그대로 유지되지만( 호환성을 유지하기 위해) 애플리케이션은 다음과 같이 해야 합니다. 이러한 일이 특정 순서로 발생한다고 절대 의존하지 마십시오. 전혀, 또는 항상 다음 중 하나인 상태 문서화된 값. 애플리케이션은 다음과 같은 작업을 수행할 수 있습니다. 이것:
스위치(PQstatus(conn))
사례 CONNECTION_STARTED:
Feedback = "연결 중...";
부서지다;
사례 CONNECTION_MADE:
Feedback = "서버에 연결되었습니다...";
부서지다;
.
.
.
기본:
Feedback = "연결 중...";
그connect_timeout사용 시 무지개 토토 매개변수가 무시됩니다.PQconnectPoll; 그것은 응용 프로그램의
과도한 금액인지 여부를 결정하는 책임
시간이 지났습니다. 그렇지 않으면,PQconnectStart다음에 aPQconnectPoll루프는
에 해당함PQconnectdb.
만약에 주의하세요PQconnectStartnull이 아닌 값을 반환합니다.
포인터를 호출해야 합니다.PQfinish작업이 끝나면,
구조물과 관련된 모든 것을 처분하기 위해
메모리 블록. 무지개 토토이 되더라도 이 작업을 수행해야 합니다.
시도가 실패하거나 중단되었습니다.
PQconndefaults기본 연결 옵션을 반환합니다.
PQconninfoOption *PQconndefaults(void);
typedef 구조체
char *키워드; /* 옵션의 키워드 */
char *envvar; /* 대체 환경 변수 이름 */
char *컴파일됨; /* 기본값으로 컴파일된 폴백 */
char *발; /* 옵션의 현재 값, 또는 NULL */
char *레이블; /* 연결 대화 상자의 필드 레이블 */
char *dispchar; /* 이 필드에 표시할 문자
연결 대화 상자에서. 값은 다음과 같습니다.
"" 입력된 값을 그대로 표시
"*" 비밀번호 필드 - 값 숨기기
"D" 디버그 옵션 - 기본적으로 표시되지 않음 */
int dispsize; /* 대화상자의 필드 크기(문자) */
PQconninfoOption;
연결 옵션 배열을 반환합니다. 이것은 사용될 수 있습니다
가능한 모든 것을 결정하기 위해PQconnectdb옵션 및 현재
기본값. 반환 값은의 배열을 가리킵니다.PQconninfo옵션구조,
null이 있는 항목으로 끝납니다.키워드포인터. 널 포인터는
메모리를 할당할 수 없는 경우 반환됩니다. 참고
현재 기본값(발필드)는 환경 변수 및 기타 사항에 따라 달라집니다.
문맥. 호출자는 연결 옵션 데이터를 처리해야 합니다.
읽기 전용으로.
옵션 배열을 처리한 후 다음을 전달하여 해제하십시오.
그것을PQconninfoFree. 만약에
이 작업이 수행되지 않으면 소량의 메모리가 누출됩니다.
각 호출PQconndefaults.
PQfinish서버와의 무지개 토토을 종료합니다. 또한 메모리를 해제합니다. 에서 사용함PGconn객체.
void PQfinish(PGconn *conn);
서버 무지개 토토 시도가 실패하더라도 주의하세요
(표시된 대로PQ상태),
애플리케이션이 호출해야 합니다.PQfinish다음에서 사용하는 메모리를 해제합니다.PGconn개체. 그만큼PGconn포인터는 다시 사용되어서는 안 됩니다
후에PQfinish이되었습니다
라고 불리는.
PQreset서버와의 통신 채널을 재설정합니다.
void PQreset(PGconn *conn);
이 기능은 서버와의 연결을 종료합니다 그리고 동일한 연결에 대한 새로운 연결을 다시 시도합니다. 서버에서는 이전에 사용한 것과 동일한 매개변수를 모두 사용합니다. 이는 작동하는 경우 오류 복구에 유용할 수 있습니다. 연결이 끊어졌습니다.
PQresetStartPQresetPoll서버에 대한 통신 채널을 재설정합니다. 비차단 방식.
int PQresetStart(PGconn *conn);
PostgresPollingStatusType PQresetPoll(PGconn *conn);
이 기능은 연결을 종료합니다.
서버에 대한 새로운 연결을 다시 시도합니다.
이전에 동일한 매개변수를 모두 사용하여 동일한 서버
사용된. 이는 작동하는 경우 오류 복구에 유용할 수 있습니다.
연결이 끊어졌습니다. 그들은 다음과 다릅니다.PQreset(위) 그들은 다음과 같이 행동한다는 점에서
비차단 방식. 이러한 기능은 동일한 문제를 겪습니다.
다음과 같은 제한 사항PQconnectStart그리고PQconnectPoll.
연결 재설정을 시작하려면 다음을 호출하세요.PQresetStart. 0을 반환하는 경우,
재설정에 실패했습니다. 1이 반환되면 다음을 사용하여 재설정을 폴링합니다.PQresetPoll정확히는
다음을 사용하여 연결을 생성하는 것과 같은 방식으로PQconnectPoll.