1. 형식
형식1) result= msqlFetchField(mres_ptr)
형식2) result= msqlFetchField(mres_ptr, field_no)
2. 기능: 인자 mres_ptr의 항목에 대한 정보(이름, 소속 테이블, 자료형, 크기,
플래그)를 객체로 얻는다.
3. 설명
(1) 이 함수는 mSQL에서 지원하는 함수이며 함수명은 mSQL의 C API와 동일하다.
(2) 인자 mres_ptr은 mSQL result 포인터이며 msqlStoreResult()함수나 기타
결과를 저장하는 함수에 의하여 얻은 값이어야 하고 mSQL result 포인터가
아니면 에러 처리되며, 이미 해제된 mSQL result 포인터일 때에는 경고
메시지를 출력하고 result에 -1 의 값을 되돌린다.
(3) 형식1)은 필드 커서 위치, 형식2)는 field_no 위치의 항목 정보를 얻는다.
(4) 형식2)의 인자 field_no는 항목에 대한 순번( 0 부터 항목개수 - 1 )이며 이
값이 문자열이고 수치로 변환될 수 없을 때는 에러 처리된다.
(5) 형식2)의 인자 field_no가 0 보다 작거나 또는 항목의 개수보다 크거나 같으
면 정수 -1 이 result에 돌려진다.
(6) 위의 설명(2)나 설명(5)의 경우가 아니면 설명(7)의 멤버 변수를 지닌 객체가
result에 돌려진다.
(7) 결과값 객체인 result의 멤버변수 설명
==========================================================
객체와 멤버변수명 자료형 설 명
------------------ -------- ------------------------------
result.name (문자열) 항목의 이름
result.table (문자열) 소속 테이블 이름
result.type (문자열) 항목의 자료형
result.type_value (정수) 항목의 자료형을 의미하는 수치
result.length (정수) 항목의 크기(bytes)
result.flags (정수) 항목의 플래그
==========================================================
1) result.type_value의 값 설명(mSQL의 버전에 따라 차이가 있을 수 있음)
===================================================
값 자료형 | 값 자료형 | 값 자료형
---- ---------- | ---- ---------- | ---- ----------
1 int | 6 text | 253 index
2 char | 7 date | 254 sysvar(?)
3 real | 8 uint | 255 any(?)
4 ident | 9 money |
5 null | 10 time |
===================================================
2) result.flags의 설명(mSQL의 버전에 따라 차이가 있을 수 있음)
=======================================
result.flags의 bit 값 flag의 의미
----------------------- ---------------
0 0 0 0 0 0 0 1 (1) NOT NULL
0 0 0 0 0 0 1 0 (2) UNIQUE
=======================================
4. 사용예#1
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);
}
mres= msqlListFields(msql, "addr"); // addr 테이블의 항목 리스트 얻기
if(mres==MSQL_ERR) { print("addr error!\n"); return(-1); }
fd= msqlFetchField(mres, 1); // 두번째 항목에 대한 정보를 얻는다.
printf("항목: %s, 테이블: %s, 자료형: %s [%d], 크기: %lu, 플래그: %X\n",
fd.name, fd.table, fd.type, fd.type_value, fd.length, fd.flags);
msqlFreeResult(mres);
msqlClose(msql);
------------------------------ [ 출력결과 ] ------------------------------
항목: age, 테이블: addr, 자료형: int [1], 크기: 4, 플래그: 0
5. 사용예#2
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);
}
mres= msqlListFields(msql, "addr"); // addr 테이블의 항목 리스트 얻기
if(mres==MSQL_ERR) { print("addr error!\n"); return(-1); }
msqlFieldSeek(mres, 2); // 3번째 항목으로 필드 커서를 이동한다.
fd= msqlFetchField(mres); // 필드 커서의 항목에 대한 정보를 얻는다.
printf("항목: %s, 테이블: %s, 자료형: %s [%d], 크기: %lu, 플래그: %X\n",
fd.name, fd.table, fd.type, fd.type_value, fd.length, fd.flags);
msqlFreeResult(mres);
msqlClose(msql);
------------------------------ [ 출력결과 ] ------------------------------
항목: address, 테이블: addr, 자료형: char [2], 크기: 120, 플래그: 0
6. 사용예#3
msql= msqlConnect(NULL); // localhost를 연결한다.
if(msql==MSQL_ERR) { print("mSQL 서버 연결 에러!\n"); return(-1); }
if(msqlSelectDB(msql,"welhelp")==MSQL_ERR) { print("DB Err!"); return(-1); }
mres= msqlListFields(msql, "addr"); // addr 테이블의 항목 리스트 얻기
if(mres==MSQL_ERR) { print("addr error!\n"); return(-1); }
while( (fd= msqlFetchField(mres))!=MSQL_ERR )
{
printf(" 항목: %s, 테이블: %s, 자료형: %s [%d], 크기: %lu, flag: %X\n",
fd.name, fd.table, fd.type, fd.type_value, fd.length, fd.flags);
}
msqlFreeResult(mres); msqlClose(msql);
------------------------------ [ 출력결과 ] ------------------------------
항목: name, 테이블: addr, 자료형: char [2], 크기: 10, flag: 1
항목: age, 테이블: addr, 자료형: int [1], 크기: 4, flag: 0
항목: address, 테이블: addr, 자료형: char [2], 크기: 120, flag: 0
|