GetRows를 이용한 DB 데이타를 뽑아보자
먼저 개념 하나 정리하고 가자.
삼성건설에서 오피스텔을 3개동으로 5실씩 건설한다고 하자.
동은 A, B, C 동으로 각 실(ROOM)은 1, 2, 3, 4, 5라 하자.
그럼 A, B, C동 각 실을 보면
room(0,0), room(1,0), room(2,0), room(3,0),room(4,0) ==> A동
room(0,1), room(1,1), room(2,1), room(3,1),room(4,1) ==> B동
room(0,2), room(1,2), room(2,2), room(3,2),room(4,2) ==> C동
으로 구성된다.
눈여겨 볼 것은 동을 표시하는 자리가 2차원 배열에 있다는 말이다.
A동으로 볼때 뒤 0 이 2차원 배열이고 여기가 동을 표시하는 곳이다.
DB에 있는 데이타를 불러올 때도 컬럼과 필드 중 동에 해당하는 것이 필드이다.
한 줄(필드) 씩 읽어서 그 중 한 칸(필드)씩 출력한다.
1. GetRows를 이용한 DB 데이타 뽑기
SQL = "select top 10 * from Test"
쿼리문으로 테이블에 있는 데이타를 가져온다.
Set rs = conn.Execute(SQL)
커넥션 실행문으로 레코드셋에 담는다.
if rs is Nothing and rs.BOF then
레코드셋(rs)가 비워있거나 첨이면 즉 데이타가 없으면 없다고("no data") 출력해 준다.
Response.Write "no data"
else
데이타가 있을 경우 allData 변수에 GetRows 함수를 써서 모든 데이타를 담는다.
모든 데이타를 한 방에 담는게 중요함. 레코드셋 ADO를 이용하는게 아니다. 차후 다시 정리 필요.
allData = rs.GetRows
end if
Response.write "LBound: "&LBound(allData)&"<br>"
Response.Write "UBound: "&UBound(allData)&"<br>"
Response.write "LBound(allData,2): "&LBound(allData,2)&"<br>"
Response.Write "UBound(allData,2): "&UBound(allData,2)&"<br>"
배열 각각의 크기를 임의로 출력해 본다.
Response.Write "<p></p>"
for i=LBound(allData,2) to UBound(alldata,2)
for y=LBound(allData) to UBound(allData)
Response.Write "allData("&y&","&i&"): "&allData(y,i)&" | "
next
Response.Write "<p></p>"
next
첫번째 for 문 i는 2차 배열 즉 레코드(Record, - ROW: 로우, 행) 값이므로 LBound(allData,2),
2차 배열이라 ( ) 안에 2를 넣어서 2차 배열임을 적어준다.
즉 각 동을 표시하는 개념과 같다.
LBound(allData,2) 의 의미는
allData(0,0), allData(1,0), allData(2,0), ..., allData(5,0) 중
뒤 0의 자리(2차 배열)의 최소값을 가져오고 있다. UBound는 최대값...
여기서 중요한 포인트는 뒷자리(2차배열)의 자리를 먼저 동일하게 표현해야 한다.
그 자리가 레코드(Record, - ROW: 로우, 행) 값이니깐 앞자리는 컬럼(column, - field: 필드, 열)의 자리이다.
그래서
(0,0), (1,0), (2,0)...
(0,1), (1,1), (2,1) ....
이런식으로 작성해 나가야 한다.
이 개념을 좀 시간을 들려서 고민을 해야 한다.
그렇지 않으면 헷갈릴 수 있다.
개념이 부족하다면 한 번 잘 생각해 보고 실습, 출력해 보기 바란다.
다시 정리 필요.
'기존카테고리 > ASP' 카테고리의 다른 글
Getrows()_Function (0) | 2017.04.28 |
---|---|
총갯수 구하기 (0) | 2016.11.18 |
2차배열 Ubound 함수 (0) | 2016.07.07 |
Sub 과 Function 사용 (0) | 2016.07.07 |
배열선언 Dim과 ReDim (0) | 2016.07.07 |