SQLSelect

 

int SQLSelect(DWORD id, char *Table, char *BindList, char *whereExpr, char *orderExpr);

 

연결된 데이터 베이스 자료를 감시 프로그램의 가상적인 메모리로 가져오는 함수이다. 이 함수를 실행한 다음 SQLFirst, SQLGetPos, SQLLast, SQLNext, SQLPrev, SQLSetPos 등의 함수를 이용하여 레코드를 검색할 수 있다.

 

함수인자

id - SQLConnect 함수를 사용하여 연결한 연결 번호

Table - 가져오고자 하는 데이터 베이스의 테이블 이름(MS-SQL은 VIEW테이블도 가능)

BindList - 편집기에서 설정한 연결설정 리스트 이름

whereExpr - 이 조건을 만족하는 레코드만 가져온다. "VALUE > 10" 이라고 설정하면 VALUE 필드의 값이 10보다 큰 레코드만 메모리로 가져오게 된다. (이 부분을 SQL문이 실행될 때 각 ODBC 엔진에서 해석하는 방법이 조금씩 다를 수 있으므로 각 데이터 베이스 프로그램의 WHERE 도움말을 참고하도록 한다.)

orderExpr - 데이터를 가져올 때 정렬 순서를 정할 수 있다. "NAME" 이나 "NAME ASC" 라고 설정하면 NAME 필드를 기준으로 오름차순으로 정렬하여 메모리로 가져오게 된다. "NAME DESC" 라고 설정하면 내림차순 정렬이 된다. (주의:5.13 버전까지는 "BY NAME" 처럼 앞에 항상 BY라는 문자를 적어주어야 하고 5.14 이후의 버전에서는 "NAME"처럼 BY를 생략해야 한다.) 이 부분은 SQL문이 실행될 때 각 ODBC 엔진에서 해석하는 방법이 조금씩 다를 수 있으므로 각 데이터 베이스 프로그램의 ORDER BY 도움말을 참고하도록 한다.

 

return 값

return값이 0이면 함수를 성공적으로 수행하지 못했다는 뜻이다.

 

예제1

@SQLSelect(id, "ValueTable", "BindListValue", "", "");

@SQLFirst(id);

문장설명 : 데이터베이스의 ValueTable 테이블에서 모든 레코드를 읽어와서 가상적인 메모리에 담는다.

다음 문장인 SQLFirst를 실행하게 되면 읽어온 첫번째 레코드를 BindListValue에 설정한 태그로 데이터를 옮겨준다.

 

예제2

@SQLSelect(id, "ValueTable", "BindListValue", "VALUE < 0", "");

@SQLLast(id);

문장설명 : 데이터베이스의 ValueTable 테이블에서 VALUE 필드가 0보다 작은 레코드만을 읽어와서 가상적인 메모리에 담는다.

다음 문장인 SQLLast를 실행하게 되면 읽어온 마지막  레코드를 BindListValue에 설정한 태그로 데이터를 옮겨준다.

예제3

@SQLSelect(id, "ValueTable", "BindListValue", "", "NAME DESC");

@SQLLast(id);

문장설명 : 데이터베이스의 ValueTable 테이블에서 모든 레코드를  NAME 필드를 내림차순으로 정렬된 레코드를 읽어와서 가상적인 메모리에 담는다.

다음 문장인 SQLLast를 실행하게 되면 읽어온 마지막  레코드를 BindListValue에 설정한 태그로 데이터를 옮겨준다.

 

참조

SQLConnect()

SQLCreateTable()

SQLDelete()

SQLDisconnect()

SQLExecute()

SQLFirst()

SQLGetPos()

SQLInsert()

SQLLast()

SQLNext()

SQLPrepare()

SQLPrev()

SQLSetPos()

SQLUpdate()