Linux에서 PostgresQL 데이터베이스 C 언어 인터페이스:libpq(二) 데이터베이스 접근

전재는 본문의 출처, Leonidas Flames의 블로그, 링크: Linux에서 PostgreSQL 데이터베이스 C 언어 인터페이스:libpq(二)
 
2. libpq 라이브러리에서 C 언어 프로그램이 PostgreSQL에 대한 접근
 
먼저 프로그램 예제를 살펴보겠습니다.
#include 
#include 
using namespace std;

int main(void)
{
	////////////     
	const char* conninfo="hostaddr=127.0.0.1 user=Meme  dbname=MyDatabase  password=123";
	PGconn* conn=PQconnectdb(conninfo);
	if(PQstatus(conn)==CONNECTION_BAD)
	{
		cout<

 
1. SQL 문 함수 실행
PGresult*  PQexec(PGconn*conn, const char* query);질의 결과 세트로 돌아가기
 
2. 비동기 질의에 사용되는 SQl 문 함수를 실행하여 여러 번 질의 결과를 얻을 수 있습니다.
PQsendQuery(PQconn*conn, const char* query);
PQresult*res=PQgetResult(PQconn* );
 
3. 조회 결과에 기록된 개수를 되돌려줍니다
int   PQntuples(const PGresult*res);
 
4. 기록에 있는 필드 개수를 되돌려줍니다
int  PQnfields(const PGresult* res);
 
5. 결과 집합의 한 필드 이름을 되돌려줍니다
char*  PQfname(const PGresult* res, intfield_index);
 
6. 결과 집합의 한 필드 데이터 형식을 되돌려줍니다
Qid  PQftype(const PGresult* res, intfield_index);
 
7. 결과 집합의 한 기록에서 한 필드의 값을 되돌려줍니다
char*  PQgetvalue(constPGresult* res, int tup_num, int field_num);
예를 들어 결과집res의 두 번째 기록의 세 번째 필드를 얻으려면
PQgetvalue(res,2,3); 좋습니다. 되돌아오는 값은char* 형식이므로 데이터의 형식 변환에 주의하십시오.반환 결과가 int 정수인 경우 다음을 수행해야 합니다.
int value=atoi(PQgetvalue(res,2,3));
 
8. 명령의 결과 상태를 되돌려줍니다
ExecStatusType PQresultStatus( const PGresult * res);
 
ExecStatusType 유형은 다음과 같이 정의됩니다.
(1)PGRES_TUPLES_OK 쿼리를 성공적으로 실행했습니다.res에서 모듈 정보를 추출할 수 있는 실행 쿼리, 예를 들어 SELECT 문장의 결과 판단에 사용됩니다.
(2)PGRES_COMMAND_OK INSERT, UPDATE, DELETE 등과 같은 데이터 없는 명령을 성공적으로 완료했습니다.
참고: PGRESCOMMAND_OK 에서는 SQL 문이 데이터베이스에서 데이터를 첨삭하고 변경했는지 여부를 판단할 수 없습니다.
예: DELETE FROM tab사용자 WHERE id=1001 만약 id=1001 데이터(오작동일 수도 있고 id 매개 변수 전송 오류일 수도 있음)를 조회하지 못하면 삭제 작업은 데이터베이스의 실제 데이터에 영향을 주지 않을 것이다. PQresultStatus가 되돌아온 결과는 여전히 PGRESCOMMAND_OK.
(3)PGRES_EMPTY_QUERY가 백엔드에 보낸 문자열이 비어 있음
(4)PGRES_BAD_RESPONSE 서버 응답을 이해할 수 없음
 
9. 일반적으로 명령의 이름만 되돌려줍니다. 처리된 줄 수와 같은 추가 데이터를 포함할 수 있습니다.데이터를 반환하지 않은 SQL 명령이 적용되는지 여부를 판단할 수 있습니다.
char* PQcmdStatus(const PGresult* res);
예를 들어 UPDATE 조회는 PQcmdStatus의 반환 결과의 영향 행수를 통해 데이터 업데이트가 성공했는지 여부를 판단할 수 있다. 이 점은 PQresultStatus 함수로 분별할 수 없다.
PGresult의 SQL 명령을 생성하는 명령 상태 문자열을 반환합니다.
UPDATE의 영향 줄 수가 0이면 "UPDATE 0"문자열을 반환해야 합니다.
 
10. SQL 명령에 의해 영향을 받은 행의 수를 반환합니다.
char* PQcmdTuples(const PGresult* res);
여기서 res는 INSERT, UPDATE 및 DELETE 명령이 관련된 행 수를 반환하고 다른 명령은 빈 문자열을 반환합니다.용도는 이전 항목과 차이가 많지 않습니다. 명령 이름만 되돌려주지 않고, 영향 줄 수만 되돌려줍니다.
 
11. 방문한 오류 정보를 되돌려 주는 데 사용한다. 예를 들어 일부 조작이 메인 키, 외부 키, 유일한 제약 등을 위반했다.오류 원인을 분석하기 위해 되돌아온char* 데이터 인쇄를 설명할 수 있습니다.
char* PQresultErrorMessage(PGresult* res);
 
12. 잘못된 필드 식별자를 되돌려줍니다
char* PQresultErrorField(PGresult* res, intfieldcode);
 
13. 결과 집합 PGresult*res의 데이터를 지우고res는 다음 조회에 다시 사용할 수 있습니다.
void PQclear(PGresult *res);
 
 

좋은 웹페이지 즐겨찾기