Full-Stack/Back-end

rs.open 뒤에 나오는 인자값들

필군~ 2008. 3. 22. 15:30

sql="SELECT top 5 * FROM admin_notice where O_OKTYPE = '1' ORDER BY UID desc"


5개 뽑아오는 쿼리문은 일단 맞습니다.(단 ms-sql일경우)



rs.open 뒤에 나오는 인자값들에 대해 설명드릴께요


rs.Open sql, db [,커서타입,Lock타입,옵션]


첫번째는 SQL문이나 저장프로시저를 사용해도 됩니다.

두번째는 Connection객체를 씁니다.

세번째부터는 생략 가능합니다. 세번째는 커서타입(ADO상수)입니다.

   0 <adOpenForwardOnly>: 레코드를 앞으로 이동시키면서 순차적으로 한번만 읽음

   1 <adOpenKeyset> : 레코드를 자유로이이동-레코드갱신-다른사용자가추가한내용열람불가

   2 <adOpenDynamic> : 레코드를 자유로이이동-레코드갱신-다른사용자가 작업한 모든내용 열람가능

   3 <adOpenStatic> : 레코드를 자유로이이동-레코드갱신불가-단지 데이타를 가져오는데 유용

네번째는 Lock타입입니다.

   adLockReadOnly : 레코드는 읽을수만 있읍니다.

   adLockPessimistic : 각 레코드는 한번밖에 갱신안됩니다.

   adLockOptimistic : 각 레코드는 한번이상 갱신가능하나 Update메서드를 실행하면 갱신안됩니다.

   adLockBatchOptimistic : 갱신모드로 들어가면 작업가능  

다섯번쨰는 옵션입니다.

   adCmdText : 첫번째가 SQL문을 실행함을 지정

   adCmdStoredProc : 첫번째가 저장프로시저를 사용함을 지정

   adCmdTable : 첫번째가 테이블을 가져오는것임을 지정



  <%

                          Set Rs=Server.CreateObject("ADODB.RecordSet")

                            sql="SELECT top 5 * FROM admin_notice where O_OKTYPE = '1' ORDER BY UID desc"

                            Rs.Open sql, db, 1, 1

                            t_subject=rs("O_SUBJECT")

                          %>

                          <!----------------------------------------------------------------------------->

                          <%=t_subject%>

제가 asp가 처음이라 이해가안가는부분이있는데요

Rs.Open sql, db, 1, 1 이부분 설명좀해주세요.

그리고 이렇게해놓으면 가장 최근꺼하나만 나오는데 5개가 다 나오게하려면 어떻게하죠?


님이 작성하신 위에 글 중에서 5개 다 뿌려주실려면 반복문을 돌려야합니다.

소스를 수정한다면 이렇게 할수 있습니다.

<%

Set Rs=Server.CreateObject("ADODB.RecordSet")

sql="SELECT top 5 * FROM admin_notice where O_OKTYPE = '1' ORDER BY UID desc"

Rs.Open sql, db, 0, 1

if rs.eof then

    response.write "자료가 하나도 없음"

else

    do until rs.eof

        t_subject=rs("O_SUBJECT")

%>

    <%=t_subject%>

<%

        rs.movenext

    loop

end if

 %>

이런식으로 반복문을 돌리면 처음부터 끝까지 돌면서 해당 레코드를 뿌려줍니다.