1. 형식
형식1) result= msqlFetchGlobal(mres_ptr)
형식2) result= msqlFetchGlobal(mres_ptr, prefix)
2. 기능: 인자 mres_ptr의 임시 저장된 결과 자료에서 한 레코드씩 순차적으로 읽어
전역변수로 항목의 값을 얻는다. 이때 형식1)은 데이터베이스의 항목 명칭
과 같은 변수명의 전역변수, 형식2)에서 인자 prefix로 지정한 접두사가
포함된 항목 명칭의 전역변수, 항목 명칭과 무관하게 인자 prefix에 순번
을 부여한 변수명의 전역변수로 값을 얻어올 수 있다.
( setlocal(ON) 이면 전역 변수, setlocal(OFF) 이면 지역 변수에 대입됨 )
3. 설명
(1) 이 함수는 mSQL에서 지원하지 않으며 msqlFetchRow() 함수를 응용한 것이다.
(2) 인자 mres_ptr은 mSQL result 포인터이며 msqlStoreResult()함수나 기타
결과를 저장하는 함수에 의하여 얻은 값이어야 하고 mSQL result 포인터가
아니면 에러 처리되며, 이미 해제된 mSQL result 포인터일 때에는 경고
메시지를 출력하고 result에 -1 의 값을 되돌린다.
(3) 형식1)은 데이터베이스의 항목 명칭과 동일한 전역변수에 값이 돌려진다.
(4) 형식2)는 인자 prefix에 의해 응용된 명칭의 전역변수에 값이 돌려진다.
(5) 인자 prefix는 문자열이어야 하며 문자열이 아니면 형변환된다.
(6) 인자 prefix가 15 문자(bytes)를 초과하거나 그 값이 변수명 작성규칙(첫글자
는 영문/한글, 그 다음부터는 숫자도 조합가능)에 위배되면 에러 처리된다.
(7) 인자 prefix의 값이 '#'으로 끝나면 '#' 문자를 제외한 명칭에 순번(1 부터
항목개수)을 부여한 변수명으로 값이 돌려지며, '#'으로 끝나지 않으면
prefix의 값에 데이터베이스의 항목명칭을 조합한 변수명에 값이 돌려진다.
(예를 들어 mres_ptr의 대상 항목의 명칭이 각각 name 과 addr 이고 prefix의
값이 "DB"이면 이 함수를 수행한 후에는 name 항목의 값은 DBname , addr 항
목의 값은 DBaddr에 기억되며, prefix의 값이 "Field#"과 같이 '#'으로 끝나
면 name 항목의 값은 Field1 , addr 항목의 값은 Field2에 기억된다)
(8) mres_ptr의 항목명이 변수명 작성규칙에 위배되면 그 항목은 field + 항목
순번(1부터)의 변수명에 값이 돌려진다.(예를 들어 3번째 항목의 항목명이
234abc와 같이 될 수 있다면 그 항목의 값은 field3의 변수명에 기억된다)
(9) 인자 prefix의 값이 NULL 또는 ""이면 형식1)과 같다.
(10) mres_ptr에 대한 항목의 개수가 결과값 result에 돌려진다.
(11) result의 값이 정수 -1(MSQL_ERR)이면 에러가 발생한 경우이다.
4. 사용예#1
// 아래 프로그램은 mSQL 서버가 정상 작동하지 않거나 또는 welhelp 라는
// 데이터베이스가 없거나 addr 이라는 테이블이 없으면 에러가 발생한다.
msql= msqlConnect(NULL); // localhost에 연결함
if(msql==MSQL_ERR) { print("mSQL 서버 연결 에러!\n"); return(-1); }
if(msqlSelectDB(msql, "welhelp")==MSQL_ERR) // welhelp database 선택
{
print("welhelp database 선택 에러!\n");
return(-1);
}
query= "select * from addr"; // addr 테이블의 모든 항목을 선택
mres= msqlQueryResult(msql, query);
if(mres==MSQL_ERR) { print("query error!!\n"); return(-1); }
if(mres==NULL) { print("store result error!\n"); return(-1); }
while( msqlFetchGlobal(mres) > 0 )
{
print("\t", name); // addr 테이블의 name 항목의 값은 name
print("\t", age); // addr 테이블의 age 항목의 값은 age
print("\t", address); // addr 테이블의 address 항목의 값은 address
print(); // 줄을 빠꿔준다.
}
msqlFreeResult(mres); // 임시 저장된 자료를 해제(free)한다.
msqlClose(msql); // mSQL 서버와의 접속을 해제한다.
------------------------------ [ 출력결과 ] ------------------------------
홍길동 28 xx시 xx동 123번지
한여름 35 oo시 oo동 456번지
서지연 20 A시 B동 789번지
5. 사용예#2
// 아래 프로그램은 mSQL 서버가 정상 작동하지 않거나 또는 welhelp 라는
// 데이터베이스가 없거나 addr 이라는 테이블이 없으면 에러가 발생한다.
msql= msqlConnect(NULL); // localhost에 연결함
if(msql==MSQL_ERR) { print("mSQL 서버 연결 에러!\n"); return(-1); }
if(msqlSelectDB(msql, "welhelp")==MSQL_ERR) // welhelp database 선택
{
print("welhelp database 선택 에러!\n");
return(-1);
}
query= "select * from addr"; // addr 테이블의 모든 항목을 선택
mres= msqlQueryResult(msql, query);
if(mres==MSQL_ERR) { print("query error!!\n"); return(-1); }
if(mres==NULL) { print("store result error!\n"); return(-1); }
while( msqlFetchGlobal(mres, "DB_") > 0 )
{
print("\t", DB_name); // addr 테이블의 name 항목의 값은 DB_name
print("\t", DB_age); // addr 테이블의 age 항목의 값은 DB_age
print("\t", DB_address); // addr 의 address 항목의 값은 DB_address
print(); // 줄을 빠꿔준다.
}
msqlFreeResult(mres); // 임시 저장된 자료를 해제(free)한다.
msqlClose(msql); // mSQL 서버와의 접속을 해제한다.
------------------------------ [ 출력결과 ] ------------------------------
홍길동 28 xx시 xx동 123번지
한여름 35 oo시 oo동 456번지
서지연 20 A시 B동 789번지
6. 사용예#3
// 아래 프로그램은 mSQL 서버가 정상 작동하지 않거나 또는 welhelp 라는
// 데이터베이스가 없거나 addr 이라는 테이블이 없으면 에러가 발생한다.
msql= msqlConnect(NULL); // localhost에 연결함
if(msql==MSQL_ERR) { print("mSQL 서버 연결 에러!\n"); return(-1); }
if(msqlSelectDB(msql, "welhelp")==MSQL_ERR) // welhelp database 선택
{
print("welhelp database 선택 에러!\n");
return(-1);
}
query= "select * from addr"; // addr 테이블의 모든 항목을 선택
mres= msqlQueryResult(msql, query);
if(mres==MSQL_ERR) { print("query error!!\n"); return(-1); }
if(mres==NULL) { print("store result error!\n"); return(-1); }
while( msqlFetchGlobal(mres, "dbfield#") > 0 )
{
print("\t", dbfield1); // addr 테이블의 name 항목의 값은 dbfield1
print("\t", dbfield2); // addr 테이블의 age 항목의 값은 dbfield2
print("\t", dbfield3); // addr 테이블의 address 항목의 값은 dbfield3
print(); // 줄을 빠꿔준다.
}
msqlFreeResult(mres); // 임시 저장된 자료를 해제(free)한다.
msqlClose(msql); // mSQL 서버와의 접속을 해제한다.
------------------------------ [ 출력결과 ] ------------------------------
홍길동 28 xx시 xx동 123번지
한여름 35 oo시 oo동 456번지
서지연 20 A시 B동 789번지
|