libpqC응용 프로그램 프로그래머의 인터페이스PostgreSQL. libpq는 일련의 라이브러리 기능입니다PostgreSQL백엔드 서버 및 수신libpq다른 여러 다른 사람들의 기본 엔진이기도합니다PostgreSQL응용 프로그램 인터페이스,libpq ++(C ++),libpgtcl(tcl),Perl및ECPG. 그래서의 일부 측면libpq의 행동이 중요합니다
이 장의 끝에 일부 짧은 프로그램이 포함되어 있습니다.섹션 27.14) 방법을 보여줍니다libpq.libpq디렉토리의 응용 프로그램src/test/examples소스 코드에서
사용하는 클라이언트 프로그램libpq헤더 파일을 포함해야합니다libpq-fe.hlibpq도서관.
다음 기능은 a를 연결하는 것을 다룹니다.PostgreSQL백엔드 서버. anpgconn함수에서 얻은 객체PQCONNECTDB
또는pqsetdblogin
. 이러한 기능은 그럴 것입니다pgconn개체. 그만큼PQSTATUS
함수를 선택하여 확인해야합니다
PQCONNECTDB
데이터베이스 서버에 새로운 연결을합니다.
pgconn *pqconnectdb (const char *conninfo);
이 기능은 새로운 데이터베이스 연결을 사용하여 엽니 다Conninfo. 같지 않은pqsetdblogin
아래, 매개 변수 세트PQConnectStart
및PQConnectPoll
)가 선호됩니다
전달 된 문자열은 모든 기본값을 사용하기 위해 비어있을 수 있습니다.키워드 = value.keyword = 'value'. 단일 따옴표 및\ '및\\.) 평등 주위의 공간
현재 인식 된 매개 변수 키 단어는 다음과 같습니다.
와이즈 토토할 호스트의 숫자 IP 주소. 이것172.28.40.9. 당신의 경우
사용hostaddr대신host허용hosthostaddr, 호스트 이름hostaddrhost,hostaddr원격 주소를 제공합니다. Kerberos가 사용될 때, ahost및hostaddrhostaddr원격 주소를 제공합니다.hostislibpqahostaddr.) 또한host보다는hostaddr익숙합니다$ home/.pgpass.
호스트 이름 또는 호스트 주소가 없으면libpq와이즈 토토됩니다
데이터베이스 이름. 기본값은 동일합니다
PostgreSQL사용자
서버가 요구하는 경우 사용할 비밀번호
최대 와이즈 토토 대기, 초
명령 줄 옵션으로 전송됩니다
무시했습니다 (이전에는 보내야 할 위치가 지정되었습니다
이 옵션은 무엇인지 또는 무엇을 결정합니다SSL와이즈 토토은 서버와 협상됩니다.비활성화만 시도 할 것입니다SSL와이즈 토토;허용의지SSL와이즈 토토, 그렇다면SSL와이즈 토토;선호(기본값)는 협상됩니다.SSL와이즈 토토, 그렇다면SSL와이즈 토토;요구만 시도 할 것입니다SSL와이즈 토토.
이 옵션은에 찬성하여 더 이상 사용되지 않습니다.sslmode설정.
1으로 설정된 경우, anSSL서버에 대한 와이즈 토토입니다sslmode 요구). libpq그런 다음 거부합니다SSL와이즈 토토.libpq협상 할 것입니다sslmode 선호). 이 옵션은 전용입니다PostgreSQL
추가 매개 변수에 사용할 서비스 이름.서비스접두사/Share/pg_service.conf.sample파일 설정 방법에 대한 정보.
매개 변수가 지정되지 않은 경우섹션 27.10)가 확인됩니다. 만약
pqsetdblogin
데이터베이스 서버에 새로운 연결을합니다.
pgconn *pqsetdblogin (const char *pghost,
이것은의 전임자입니다.PQCONNECTDB
고정 된 세트가 있습니다NULL또는 빈 문자열
pqsetdb
데이터베이스 서버에 새로운 연결을합니다.
pgconn *pqsetdb (char *pghost,
이것은 호출하는 매크로입니다pqsetdblogin
로그인및PWD매개 변수. 그것은 제공됩니다
PQConnectStart
PQConnectPoll
PGCONN *PQCONNECTSTART (const char *conninfo);
PostGrespollingStatUstype PQConnectPoll (PgConn *Conn);
이 두 기능은PQCONNECTDB
따라서 응용 프로그램이 가능합니다
데이터베이스 연결은 매개 변수를 사용하여 이루어집니다Conninfo,PQConnectStart
.PQCONNECTDB
.
아니PQConnectStart
NORPQConnectPoll
의지
thehostaddr및host매개 변수가 사용됩니다PQCONNECTDB
위의 자세한 내용은
전화하면pqtrace
,
소켓이 적절한 지 확인하십시오PQConnectPoll
21774_21809
블로킹되지 않은 와이즈 토토 요청을 시작하려면 전화conn = pqConnectStart ( "Connection_info_string"). 만약에connlibpq할당 할 수 없었습니다pgconn구조.pgconn포인터가 반환되었습니다 (아직 유효성을 나타내지는 않지만PQConnectStart
, Call상태 = pqstatus (conn). 만약에상태equalsConnection_Bad, PQConnectStart
실패했습니다.
ifPQConnectStart
성공, 다음 단계는 투표하는 것입니다libpq진행할 수 있습니다pqsocket (conn)
설명자를 얻으려면pqconnectpoll (conn)
마지막 반품pgres_polling_reading, 기다릴 때까지 기다리십시오select ()
, poll ()
또는 유사한 시스템 기능).pqconnectpoll (conn)
다시. 거꾸로,pqconnectpoll (conn)
마지막pgres_polling_writing,pqconnectpoll (conn)
다시.PQConnectPoll
, 즉, 바로 다음PQConnectStart
,pgres_polling_writing. 이 루프를 계속하십시오pqconnectpoll (conn)
반환pgres_polling_failed,pgres_polling_ok,
와이즈 토토하는 동안 언제든지PQSTATUS
. 이것이주는 경우Connection_Bad, 그런 다음 연결Connection_ok
PQConnectPoll
, 위에서 설명합니다. 다른
와이즈 토토이 이루어지기를 기다리고 있습니다.
와이즈 토토 확인; 보내기를 기다리고 있습니다.
서버에서 응답을 기다리고 있습니다.
인증을 받았습니다. 백엔드를 기다리고 있습니다
SSL 암호화 협상.
환경 중심 매개 변수 협상
이 상수는 여전히 남아 있지만 (in
스위치 (pqstatus (conn))
theConnect_Timeout사용 할 때 연결 매개 변수가 무시됩니다PQConnectPoll
; 응용 프로그램입니다PQConnectStart
뒤 따르는PQConnectPoll
루프입니다PQCONNECTDB
.
ifPQConnectStart
널을 반환합니다pqfinish
당신이 그것을 끝내면,
pqconndefaults
기본 연결 옵션을 반환합니다.
pqconninfooption *pqconndefaults (void);
연결 옵션 배열을 반환합니다. 이것은 사용될 수 있습니다PQCONNECTDB
옵션 및 현재pqconninfooption구조,키워드포인터. 현재입니다val필드)
옵션 배열을 처리 한 후 전달하여 자유롭게 해방하십시오PQCONNINFOFREE
. 만약에pqconndefaults
.
pqfinish
서버에 대한 와이즈 토토을 닫습니다. 또한 메모리를 해방시킵니다pgconn개체.
void pqfinish (pgconn *conn);
서버 와이즈 토토 시도가 실패하더라도 주목하십시오PQSTATUS
),pqfinish
pgconn개체. 그만큼pgconn포인터를 다시 사용해서는 안됩니다pqfinish
pqreset
통신 채널을 서버로 재설정합니다.
void pqreset (pgconn *conn);
이 함수는 서버에 대한 와이즈 토토을 닫습니다
PQRESETSTART
pqresetpoll
통신 채널을 서버로 재설정하십시오
int pqresetstart (pgconn *conn);
PostGrespollingStatUstype PQRESETPOLL (PGCONN *CONN);
이 함수는 와이즈 토토을 닫습니다pqreset
(위) aPQConnectStart
및PQConnectPoll
.
와이즈 토토 재설정을 시작하려면 CallPQRESETSTART
. 0을 반환하면pqresetpoll
정확히PQConnectPoll
.