DB연결해서 테이블의 데이터 값과 개수를 출력하는 예제문이다.

 

 

[결과 화면] [DB 쿼리문 출력 결과]

 

코드

<%
-- DB 연결
Set oraConn = Server.CreateObject("ADODB.Connection")
oraConn.Open("dsn=[dsn];uid=[id];pwd=[password]")

Set oraRec = Server.CreateObject("ADODB.Recordset")
			
    sql = "select * from emp" 
	oraRec.Open sql, oraConn
%>

<html>
    <head>
    <title>예제 - 여러 개 데이터 출력하기</title>
    </head>
    <body>
    <%If OraRec.EOF Then %>
        <p>데이터가 없습니다.</p>
        <p>감사합니다.</p>
    <%Else %>
        <h2>쿼리 결과로 가져온 데이터입니다.</h2><hr />
        <%Dim count %>
        <%Do While Not OraRec.EOF %>
        <p>
        번호는 <b><%=OraRec.Fields("EMPNO")%> </b>,
        이름은 <b><%=OraRec.Fields("ENAME")%> </b>,
        직업는 <b><%=OraRec.Fields("JOB")%> </b>,
        부서이름은 <b><%=OraRec.Fields("DEPTNO")%> </b> 입니다.
        </p>

        <%OraRec.MoveNext%>
        <%count = count+1 %>
        <%Loop %>
    <b><%=count%></b>개 찾았습니다.
    <%End If %>
    </body>					
</html>

 

코드 리뷰

<%If OraRec.EOF Then %>
  <p>데이터가 없습니다.</p>
  <p>감사합니다.</p>
<%Else %>
  <h2>쿼리 결과로 가져온 데이터입니다.</h2>
<%End If %>
  • 데이터가 없는 경우 OraRec.EOF : true > "데이터가 없습니다." 출력 
  • 데이터가 있는 경우 OraRec.EOF : false > "쿼리 결과로 가져온 데이터입니다." 출력

 

 <%Dim count %>
 <%Do While Not OraRec.EOF %>
 <p>
 번호는 <b><%=OraRec.Fields("EMPNO")%> </b>,
 이름은 <b><%=OraRec.Fields("ENAME")%> </b>,
 직업는 <b><%=OraRec.Fields("JOB")%> </b>,
 부서이름은 <b><%=OraRec.Fields("DEPTNO")%> </b> 입니다.
 </p>
<%OraRec.MoveNext%>
<%count = count+1 %>
<%Loop %>
<b><%=count%></b>개 찾았습니다.
  • Dim count 변수 선언
  • While Not OraRec.EOF(데이터가 있으니까 false)  > 앞에 Not을 붙여줘서 true 됨 > 데이터가 있는 동안 실행
  • OraRec.Fields("필드명")으로 필드 출력
  • OraRec.MoveNext로 다음 레코드로 넘어감
  • count에 1씩 더해주면서 개수 저장

 

[출처] sugame.tistory.com/221

 

BOF는 Begin Of File로 레코드 셋의 시작, EOF는 End Of File로 레코드 셋의 끝을 의미한다.

레코드가 하나가 아닌 경우 가상 테이블의 형태로 레코드셋이 저장되고 그 시작과 끝을 구분해주는 것이 BOF와 EOF이다.

 

주로 DB에서 데이터를 불러오는 경우 사용

If Rs.EOF Or Rs.BOF Then
...(중략)
End If

 

DB에 데이터가 있는 경우 Rf.EOF와 RS.BOF는 false가 되고 데이터가 없는 경우 true가 된다.

일반적으로 아래처럼 EOF만 사용해서 데이터를 출력하는 데 많이 사용하고 있다.

If Not Rs.EOF Then
...(출력 데이터)
End If

if rs.BOF or rs.EOF then
  response.write "데이터가 존재하지 않습니다"
else
  response.write "데이터 출력"
end if

[출처] travelpark.tistory.com/51

+ Recent posts