database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 2384 게시물 읽기
No. 2384
Re: Re: Re: 소스와 결과물입니다.
작성자
정재익
작성일
2001-03-03 20:56
조회수
3,925

현재 아래코드 자체는 큰 에러가 없는 것 같습니다. 물론 res 라든가 buf 등의 자료형 및 그 크기는 적당히 설정되어 있을 것으로 생각됩니다.

 

그리고 Query 실행결과를 받고 나서 그 return 결과를 확인할때 다음을 반드시 명심하시기 바랍니다.

 

PGRES_EMPTY_QUERY // backend (postmaster) 로 보낸 문자열이 비어 있을 경우.

 

PGRES_COMMAND_OK // 서버로 명령(접속 명령어등)가 성공적으로 실행되고, 그 결과로

돌아오는 tuple 이 없을 경우 사용.

 

PGRES_TUPLES_OK // Query 가 성공적으로 수행되었을 경우

 

PGRES_COPY_OUT // Server 로 부터 자료 전송이 시작된 경우.

 

PGRES_COPY_IN // 서버로 자료 전송이 시작된 경우.

 

PGRES_BAD_RESPONSE // 서버의 반응을 이해할 수 없는 경우 발생.

 

PGRES_NONFATAL_ERROR

 

PGRES_FATAL_ERROR

 

대부분의 사람들이 PGRES_COMMAND_OK 와 PGRES_TUPLES_OK 의 사용법을 헤깔려 하고 잘못 사용하는 경우가 왕왕 있더군요.

 

>>이태웅 님께서 쓰시길<<

 

:: PGconn *pc119;

:: PGresult *res;

::

:: pghost = NULL;

:: pgport = NULL;

:: pgoptions = NULL;

:: pgtty = NULL;

:: dbName = "wboard";

:: login = "postgres";

:: pwd = NULL;

::

:: pc119 = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName, login, pwd);

::

:: if (PQstatus(pc119) == CONNECTION_BAD)

:: {

:: printf("'%s'DB의 접속에 실패했습니다.<br>", dbName);

:: printf("%s", PQerrorMessage(pc119));

:: exit_nicely(pc119);

:: }

::

:: res = PQexec(pc119, buf);

::

:: printf("%s",buf);

::

:: if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)

:: {

:: printf("저장오류");

:: PQclear(res);

:: exit_nicely(pc119);

:: } 소스중 중요한건 이부분이고요~

:: //////////////////////////////////////

:: insert into profile(name, id, password, email, per_num, hp_num, addr_num, home_addr, home_phone,

:: quiz, answer) values('XXX', 'XXXX', '1111', 'XXXX@hanmail.net', 'XXXXXX/1772421', '011/XXX/0865

:: ', '121020', '서울특별시 마포구 공덕동 모냐', '02/574/7440', '모냐', '답')저장오류

:: ////////////////

:: 이부분은 결과메시지입니다.

:: 저장오류라는 글이 나오기전까지의 부분을 복사해서 psql에서 직접 명령을 주면...

:: 잘만.. 실행됩니다.

:: if (PQresultStatus(res) != PGRES_COMMAND_OK)

:: {

:: if (PQresultStatus(res)==PGRES_FATAL_ERROR)

:: {

:: printf("PGRES_FATAL_ERROR");

:: }

:: printf("명령문실패!\n");

:: PQclear(res);

:: exit_nicely(pc119);

:: }

:: 이런식으로 위의 부분을 고치면 PGRES_FATAL_ERROR 로 출력이 됩니다.

:: 조언 부탁드립니다. ㅠ.ㅠ

[Top]
No.
제목
작성자
작성일
조회
2387test/examples 에서.. 왕초보임당
김진곤
2001-03-05
3423
2405┕>Re: test/examples 에서.. 왕초보임당
신현호
2001-03-10 01:37:20
3675
2383PostgreSQL 7.1 snapshot버젼...
김윤한
2001-03-02
3666
2386┕>Re: PostgreSQL 7.1 snapshot버젼 libpq++ 컴팔 에러
yundream
2001-03-05 09:46:57
3687
2382일반 파일 입력
이성철
2001-03-02
3513
2385┕>Re: 일반 파일 입력
정재익
2001-03-03 21:36:10
3461
2404 ┕>Re: Re: 일반 파일 입력
신현호
2001-03-10 01:35:36
3621
2377셀렉트 문에서 에러가 납니다~~
이태웅
2001-02-28
3122
2379┕>Re: 셀렉트 문에서 에러가 납니다~~
정재익
2001-02-28 20:37:56
3563
2380 ┕>Re: Re: 소스와 결과물입니다.
이태웅
2001-03-02 10:58:17
3795
2384  ┕>Re: Re: Re: 소스와 결과물입니다.
정재익
2001-03-03 20:56:59
3925
2388   ┕>해결책을 알았네요.
이태웅
2001-03-05 14:09:56
3391
2376태웅이의 버버벅 코딩 테크닉... #2
이태웅
2001-02-28
3160
2372패스워드 col에 encription 푸는 법??????????
급한놈
2001-02-28
3309
2374┕>Re: 패스워드 col에 encription 푸는 법??????????
정재익
2001-02-28 14:53:09
3721
2371특정 테이블에서의 VACUUM시 ERROR
안재석
2001-02-28
3409
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다