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