다음 함수는 연결을 처리합니다.포스트그레SQL백엔드 서버. 안
응용프로그램은 여러 백엔드 연결을 열어둘 수 있습니다.
한 번. (그렇게 하는 한 가지 이유는 둘 이상의
데이터베이스.) 각 연결은 다음과 같이 표시됩니다.PGconn함수에서 얻은 객체PQconnectdb또는PQsetdb로그인. 이러한 기능은
아마도 존재하지 않는 한 항상 null이 아닌 객체 포인터를 반환합니다.
할당하기에도 메모리가 너무 적습니다.PGconn객체.PQ상태함수를 호출하여 확인해야 합니다
쿼리가 수행되기 전에 토토 베이이 성공적으로 이루어졌는지 여부
토토 베이 개체를 통해 전송됩니다.
PQconnectdb토토 베이 서버에 새로운 연결을 만듭니다.
PGconn *PQconnectdb(const char *conninfo);
이 함수는 다음을 사용하여 새 데이터베이스 연결을 엽니다.
문자열에서 가져온 매개변수콘인포. 달리PQsetdb로그인아래의 매개변수 세트는
함수 서명을 변경하지 않고 확장할 수 있으므로 다음을 사용하십시오.
이 함수(또는 비차단 유사체)PQconnectStart그리고PQconnectPoll)이 새 항목에 선호됩니다.
응용 프로그램 프로그래밍.
전달된 문자열은 모든 기본값을 사용하기 위해 비어 있을 수 있습니다 매개변수 또는 하나 이상의 매개변수를 포함할 수 있습니다. 공백으로 구분된 설정입니다. 각 매개변수 설정은 형식으로키워드 = 값. 등호 주위의 공백은 선택 사항입니다. 작성하려면 빈 값 또는 공백이 포함된 값은 다음으로 묶습니다. 작은따옴표(예:키워드 = 'a 값'. 값 내의 작은따옴표 및 백슬래시 백슬래시로 이스케이프해야 합니다. 즉,\'그리고\\.
현재 인식되는 매개변수 키워드는 다음과 같습니다:
연결할 호스트의 이름.슬래시로 시작하면 대신 Unix 도메인 통신을 지정합니다. TCP/IP 통신; 값은 이름입니다. 소켓 파일이 저장되는 디렉토리입니다. 는 다음 경우의 기본 동작호스트지정되지 않은 것은 Unix 도메인에 토토 베이하는 것입니다 소켓에/tmp(또는 다른 소켓 다음과 같은 경우 디렉토리가 지정되었습니다.포스트그레SQL빌드되었습니다). 켜짐 Unix 도메인 소켓이 없는 시스템의 경우 기본값은 다음과 같습니다. 연결하려면로컬호스트.
연결할 호스트의 숫자 IP 주소입니다. 이 표준 IPv4 주소 형식이어야 합니다(예:172.28.40.9. 당신의 기계라면 IPv6를 지원하는 경우 해당 주소를 사용할 수도 있습니다. TCP/IP 통신은 비어 있지 않은 경우 항상 사용됩니다. 이 매개변수에 문자열이 지정되었습니다.
사용 중hostaddr대신에호스트응용프로그램을 허용합니다 중요할 수 있는 호스트 이름 조회를 피하기 위해 시간 제약이 있는 애플리케이션에서. 그러나, Kerberos 인증에는 호스트 이름이 필요합니다. 는 따라서 다음이 적용됩니다: If호스트없이 지정됨호스트주소, 호스트 이름 조회가 발생합니다. 만일호스트주소지정됨 없이호스트, 값은hostaddr리모컨을 제공합니다 주소. Kerberos를 사용하는 경우 역이름 쿼리 Kerberos에 대한 호스트 이름을 얻기 위해 발생합니다. 둘 다인 경우호스트그리고hostaddr지정됨, 값은hostaddr리모컨을 제공합니다 주소; 값은호스트은 Kerberos를 사용하지 않는 한 무시됩니다. 이 경우 해당 값은 Kerberos 인증에 사용됩니다. (참고 다음과 같은 경우 인증이 실패할 가능성이 높습니다.libpq다음과 같은 호스트 이름이 전달되었습니다. 은(는) 기계 이름이 아닙니다.호스트주소.) 또한,호스트대신hostaddr식별하는 데 사용됩니다. 토토 베이~/.pgpass(참조젠 토토 : 문서 : 8.2 : 암호 파일).
호스트 이름이나 호스트 주소가 없으면,libpq연결됩니다 로컬 Unix 도메인 소켓을 사용합니다. 아니면 기계에서 Unix 도메인 소켓이 없으면 다음을 시도합니다. 연결하다로컬호스트.
토토 베이 이름. 기본값은 사용자 이름.
PostgreSQL사용자 연결할 이름입니다. 기본값은 운영 체제를 실행하는 사용자의 운영 체제 이름 신청합니다.
서버가 비밀번호를 요구할 경우 사용할 비밀번호 인증.
최대 연결 대기 시간(초)(다음과 같이 작성) 10진수 문자열). 0 또는 지정되지 않음 무한정 기다리라는 뜻이다. 사용하지 않는 것이 좋습니다 2초 미만의 시간 초과.
서버로 전송될 명령줄 옵션입니다.
무시됨(이전에는 보낼 위치를 지정했습니다.) 서버 디버그 출력).
이 옵션은 무엇을 사용할지 여부를 결정합니다. 우선순위 anSSL토토 베이이 서버와 협상됩니다. 거기 네 가지 모드가 있습니다:비활성화할 것이다 암호화되지 않은 시도만 시도하십시오.SSL토토 베이;허용협상할 것입니다. 먼저 노력하겠습니다. 비-SSL연결에 실패하면 다음을 시도해 보세요.SSL토토 베이;선호(기본값)은 협상하고, 먼저 시도해보세요.SSL토토 베이, 그렇다면 그렇다면 실패, 일반 비- 시도SSL토토 베이;요구한 번만 시도하겠습니다SSL토토 베이.
만약PostgreSQL이다 옵션을 사용하여 SSL 지원 없이 컴파일됨요구오류가 발생하지만 옵션허용그리고선호접수되지만libpq않습니다 사실 시도 anSSL토토 베이.
이 옵션은 다음을 위해 더 이상 사용되지 않습니다.sslmode설정.
1로 설정하면,SSL서버 연결이 필수(이것은 다음과 같습니다.sslmode 요구). libpq그러면 거절할 것입니다 서버가 승인하지 않으면 토토 베이하십시오.SSL토토 베이. 만약에 0(기본값)으로 설정,libpq협상할 것입니다. 서버와의 토토 베이 유형(동등함sslmode 선호). 이 옵션은 만일PostgreSQL입니다 SSL 지원으로 컴파일되었습니다.
인증 시 사용할 Kerberos 서비스 이름 Kerberos 5를 사용합니다. 서비스 이름과 일치해야 합니다. Kerberos에 대한 서버 구성에 지정됨 인증에 성공합니다. (또한 참조섹션 20.2.3.)
추가 매개변수에 사용할 서비스 이름입니다. 그것 서비스 이름을 지정합니다.pg_service.conf추가 보유 연결 매개변수. 이를 통해 애플리케이션은 다음을 수행할 수 있습니다. 연결 매개변수를 위해 서비스 이름만 지정 중앙에서 관리할 수 있습니다. 참조섹션 29.14.
매개변수가 지정되지 않은 경우 해당 환경 변수(참조섹션 29.12)이 확인되었습니다. 만약 환경 변수도 설정되지 않은 경우 표시된 내장된 기본값이 사용됩니다.
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차단할 예정이므로
여러 가지 제한 사항이 충족되는 한:
그hostaddr그리고호스트매개변수가 적절하게 사용되었습니다.
이름 및 역방향 이름 쿼리가 발생하지 않도록 하기 위해
만들어졌습니다. 다음 매개변수에 대한 문서를 참조하세요.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.