http://taeyo.pe.kr 에서 퍼옴.

내가 지금껏 이렇게 작업하는 경우는 별로 없었다.

그래서, ASP 작업 스타일을 바꾸고자. 퍼왔다.

.NET도 시작해야하는데... -.-;

기왕 좀 늦은거 C# 2.0 으로 다시 해야겠다. ^^;;;

 

lecture Home > ASP 와 ADO > ActiveX Data Object

Stored Procedure & ASP - 판희완님 제공

   강좌 최초 작성일 : 2001년 04월 xx일
   강좌 최종 수정일 : 2001년 08월 20일

   작성자 : 판희완
   편집자 : Taeyo(김 태영)

   강좌 제목 : 중급규모 이상의 사이트 제작시 ASP 코딩 & Stored Procedure 사용법

강좌 전 태오의 잡담>

이번 강좌는 판희완님(판유걸의 형? 설마~~)이 제공해 주시는 강좌입니다. 많은 도움이 되시길....


강좌 시작>

안녕하세요....앞으로 몇회에 걸쳐 이 강좌의 진향을 맡게된 판희완입니다....

먼저 강좌를 진행하기 전에 이 강좌의 주제와 앞으로 진행해나갈 내용들에 대해 간단한 소개를 하도록 하겠습니다. 제가 생각하기에 이 강좌는 어느정도 ASP를 해오신 분이 보시면 아주 좋을 거라고 생각합니다. 그런 분들이라면 이해하시기에 그리 어려움이 없으실 거라고 생각합니다.

◈ 이 강좌의 주제

이 강좌의 주제는 미리 말씀드렸듯이 '중급규모 이상의 사이트 제작시 ASP 코딩 & Stored procedure 사용법' 입니다.. 자...그럼 왜 이런 제목을 붙여놓았을까요...^^ 뭐 이거 꼭 알아야 할까요?

결론부터 말씀드리자면 안들으셔도 별 무리 없습니다. 엇..그럼 왜 이런 강좌를 하냐구여?

소규모 사이트라면 문제가 없겠지만 사이트 규모가 커지면 작업속도를 빠르게 하기위해서 참여하는 개발자의 인원이 많아집니다... 또 ASP의 특성상 HTML과 스크립트가 혼합되어서 사용되게 되지요.. 그런데 개발자마다 자기 방식대로 코딩을 하고 있기 때문에 가뜩이나 어지로운 소스가 더 어지러워집니다. -_-;; 남이 짠 소스를 보기가 부담스러워지죠...

그런 문제점들을 해결해보고자 하는것이 이 강좌의 목적입니다. 사실 이 강좌에서 새로운 기술이나 기법은 전혀 없습니다. 단지 종합판이라고나 할까요...

 

◈ 앞으로의 강좌 진행

앞으로 강좌의 진행은 아래의 순서를 따르겠습니다.

1. ASP 페이지 구조 -- 함수화와 모듈화
2. Stored Procedure 의 구조화

자...간단하죠? 별로 어렵지 않겠죠? 네 ...별로 어렵지 않습니다. ^^

 

1. ASP 페이지의 구조

자..백문이 불여일견이라고 먼저 소스를 볼까요?

<%@ EnableSessionState=False%>
<%option explicit%>

<%
'*----------------------------------------------------------------------------*
'* #100 변수 선언부
'*----------------------------------------------------------------------------*
dim objRs
dim i,j
dim recordcount1
dim AllRec,cols,rows1

'
call Page_Load()
call get_Table1()
call set_Table1()
call Page_UnLoad()
'*----------------------------------------------------------------------------*
'* Function
'*----------------------------------------------------------------------------*
sub Page_Load()
end sub
'*----------------------------------------------------------------------------*
sub Page_UnLoad()
end sub
'*----------------------------------------------------------------------------*
sub get_Table1()
set objRs = objCon.Execute("{Call SPCOMMON('pro00lst','','','','','','')}")
end sub
'*----------------------------------------------------------------------------*
sub set_Table1()
    if not (objRs.EOF or objRs.BOF) then
        AllRec = objRs.GetString(2)
        rows1 = split(AllRec,chr(13))
        recordcount1 = ubound(rows1)
    end if
end sub
'*----------------------------------------------------------------------------*
%>
<HTML>
<BODY>
</BODY>
</HTML>

이 소스를 보시면 아시겠지만 스크립트쪽과 HTML 쪽이 완전히 분리되어 있습니다.
아주 보기 쉽게 되어 있죠? 자 그럼 하나하나 설명을 해 볼까요?

##########################################
'*------------------------------------------------------------------------*
'* #100 변수 선언부
'*------------------------------------------------------------------------*
dim objRs
dim i,j
dim recordcount1
dim AllRec,cols,rows1

'
call Page_Load()
call get_Table1()
call set_Table1()
call Page_UnLoad()
#########################################

이 부분은 이 페이지 내에서 전역으로 쓰일 변수와 함수를 콜하는 부분입니다.
함수 이름만 보셔도 아시겠죠? Page_Load는 처음 페이지를 Load하면서 처리할 일들을 기술하는 함수이고요.  get_Table1은 DB 에서 데이타를 가져오는 함수, set_Table1은 가져온 데이타를 변수에 setting 하는 함수, Page_UnLoad는 페이지를 서버와 연결이 끊어질때 해야할일을 기술하는 함수입니다.

그럼 데이타를 가져오는 부분과 셋팅하는 부분인 get_Table1과 set_Table1을 볼까요?

'*----------------------------------------------------------------------------*
sub get_Table1()
set objRs = objCon.Execute("{Call SPCOMMON('pro00lst','','','','','','')}")
end sub
'*----------------------------------------------------------------------------*
sub set_Table1()
if not (objRs.EOF or objRs.BOF) then
AllRec = objRs.GetString(2)
rows1 = split(AllRec,chr(13))
recordcount1 = ubound(rows1)
end if
> end sub
'*----------------------------------------------------------------------------*

get_Table1은 Stored Procedure 를 이용해 데이타를 가져와서 objRs 변수에 할당합니다. 그리고 set_Table1은 가져온 데이타를 모두 배열에 넣습니다.

AllRec = objRs.GetString(2)

에서 보시면 GetString 메소드를 이용해서 컬럼은 Tab키(chr(9))로 로우는 캐리지리턴(chr(13)) 으로 구분해서 (GetString 메소드에 대한 자세한 설명은 Taeyo님의 ASP & Database에 있습니다.) AllRec 변수에다 문자열로 저장합니다. 그리고 rows1 에 row 별로 배열로 저장하구여, rows1배열의 크기를 구해서 가져온
레코드의 총 갯수를 알아냅니다.

어라..지금 무슨 일이 일어난거죠? 네...현재 rows1배열에 DB에서 가져온 레코드들이 전부 저장이 되었습니다. 그럼 rows1 배열만 만지작 거리면 값들이 나오겠죠?

그러면 실제로 사용예를 볼까요?

<%@ EnableSessionState=False%>
<%option explicit%>
<!--#INCLUDE FILE="lib/const.asp" -->
<!--#INCLUDE FILE="lib/connect.asp" -->

<%
'*----------------------------------------------------------------------------*
'* #100 변수 선언부
'*----------------------------------------------------------------------------*
dim objRs
dim i,j
dim recordcount1
dim AllRec,cols,rows1

'
call Page_Load()
call get_Table1()
call set_Table1()
call Page_UnLoad()
'*----------------------------------------------------------------------------*
'* Function
'*----------------------------------------------------------------------------*
sub Page_Load()
end sub
'*----------------------------------------------------------------------------*
sub Page_UnLoad()
    set objRs = nothing
    objCon.close()
    set objCon= nothing
end sub
'*----------------------------------------------------------------------------*
sub get_Table1()
    set objRs = objCon.Execute("{Call SPCOMMON('pro00lst','','','','','','')}")
end sub
'*----------------------------------------------------------------------------*
sub set_Table1()
    if not (objRs.EOF or objRs.BOF) then
        AllRec = objRs.GetString(2)
        rows1 = split(AllRec,chr(13))
        recordcount1 = ubound(rows1)
    end if
end sub
'*----------------------------------------------------------------------------*
function print_List()
    for i = 0 to recordcount1 - 1
        cols = split(rows1(i),chr(9))
        %>
        <tr><td>cols(0)</td><td>cols(1)</td></tr>
        <%
    next
end function
'*----------------------------------------------------------------------------*

%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<table><%=print_List()%></table>
</BODY>
</HTML>

새로운 함수가 추가되었네요? print_List ?
이건 뭐지? ^^ 이건 실제로 HTML부분에 찍어줄때 함수화를 하기 위해서 만들어준겁니다.

'*----------------------------------------------------------------------------*
function print_List()
    for i = 0 to recordcount1 - 1
        cols = split(rows1(i),chr(9))
        %>
        <tr><td>cols(0)</td><td>cols(1)</td></tr>
        <%
    next
end function
'*----------------------------------------------------------------------------*

소스를 보시면 가져온 수만큼 for 문들 돌면서 row별로 컬럼을 cols 배열에 저장한후 처리하죠?

자...이해되셨나요? 그럼 잠깐 생각을 해볼까요? 이런 방식이 어떤 점에서 좋을까요?
네..일단 소스 보기가 편해집니다..남이 짠 소스라도 금방 이해할수 있고요..
그 말은 곧 디버깅이 편해진다는 말과도 통해겠죠? 아무것도 아닌것 같지만 공동작업에 있어서는 굉장히
편해진답니다.

그럼 다음에는 Stored Procedure 의 구조화로 만나겠습니다.~~~
안녕~~ 좋은 하루 되세요.. 

Back

이올린에 북마크하기(0) 이올린에 추천하기(0)

트랙백 보낼 주소 :: 이 글에는 트랙백을 보낼 수 없습니다

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

[로그인][오픈아이디란?]


BLOG main image
열정은 동사다. by 無聲呼人

카테고리

All that my life (387)
Notice (3)
Monologue (215)
책, 영화 그리고 음악 (15)
내가 보는 세상 (22)
I like computer (110)
WishList (9)

글 보관함

달력

«   2009/01   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Statistics Graph