이번 프로젝트에서 Java의 스트러츠, iBatis처럼 SQL과 웹페이지을
분리하고 싶어서 이리저리 돌아다니던중에 좋은 글이 눈에 띠어서~~
샤샤샥~
설명대로 셋팅하고 실제구동을 했는데 아주아주 괜찮네요. ㅎㅎ
DKTools이 아니었다면 삽질의 반복끝에 완성했을것을
감격의 눈물이 ㅜㅜ
1. 초기화 하기
우선 다운받은 파일을 프로젝트에 넣고 사용하고자 하는 곳에 다음과 같이 선언한다.
<!-- #Include Virtual = "/DKTools/DKSimpleQueryLoader/DKUtil.asp" -->
<!-- #Include Virtual = "/DKTools/DKSimpleQueryLoader/DKSimpleQueryLoader.asp" -->
<%
Dim DKSQL
Set DKSQL = New DKSimpleQueryLoader
%>
<!-- #Include Virtual = "/DKTools/DKSimpleQueryLoader/DKSimpleQueryLoader.asp" -->
<%
Dim DKSQL
Set DKSQL = New DKSimpleQueryLoader
%>
2. 데이터베이스 등록
다음과 같이 데이터베이스를 등록하도록 한다. UDL 파일을 만드는 방법은 다른 많은 블로그를 참고하기 바란다.
<%
DKSQL.SetUdlFile Server.MapPath("/_lib/classes/dbHelper/admin.udl")
%>
DKSQL.SetUdlFile Server.MapPath("/_lib/classes/dbHelper/admin.udl")
%>
3. 쿼리저장소 등록
SQL 을 모아 둔 XML 그룹 파일을 지정한다. 앞으로 이 파일들은 쿼리저장소라고 부르도록 하겠다.
쿼리저장소는 쿼리의 재사용을 가능하게 해 주는 역할을 하게 된다.
쿼리 저장소는 다음과 같이 추가 하도록 한다.
<%
DKSQL.AddQuery Server.MapPath("/_lib/query/adminMenu.xml")
%>
DKSQL.AddQuery Server.MapPath("/_lib/query/adminMenu.xml")
%>
쿼리저장소 파일은 그룹별로 묶어서 관리 할 수 있으며, 여러개를 추가하여 운용할 수 있다.
쿼리 저장소의 데이터는 xml 형태로 작성 되며, 다음과 같이 구성된다. 우선, DB에 다음과 같은 TABLE이 있다고 가정하겠다.
Table Name : adminMenu
NAME | Type | Length |
menuId | varchar | 20 |
menuName | varchar | 20 |
sortNo | int |
그리고 쿼리저장소 파일을 만든다. 이 파일에 adminMenu 를 조작하는 DML 을 담아두었다. 경로는 위에저 지정한 /_lib/query/adminMenu.xml 로 지정한다.
File Name : adminMenu.xml
<query>
<update id="updateAdminMenu">
update adminMenu set menuName = '#menuName#'
<isEqual parameter="sortNo" compareValue="0">,sortNo = 0</isEqual>
<isNotEqual parameter="sortNo" compareValue="0">,sortNo = 1</isNotEqual>
where <isNotEmpty parameter="menuId">menuId = '#menuId#'</isNotEmpty>
</update>
<insert id="insertAdminMenu">
insert into adminMenu(menuId, sortNo, menuName)
values('#menuId#', '#sortNo#', '#menuName#')
</insert>
<delete id="deleteAdminMenu">
delete from adminMenu where menuId = '#menuId#'
</delete>
<select id="selectAdminMenu">
select menuId, menuName, sortNo
from adminMenu
where 1 = 1 <isNotEmpty parameter="menuId">and menuId = '#menuId#'</isNotEmpty>
</select>
<select id="selectAdminMenuCount">
select count(*) as cnt
from (<include refId="selectAdminMenu" />) as a
</select>
</query>
<query>
<update id="updateAdminMenu">
update adminMenu set menuName = '#menuName#'
<isEqual parameter="sortNo" compareValue="0">,sortNo = 0</isEqual>
<isNotEqual parameter="sortNo" compareValue="0">,sortNo = 1</isNotEqual>
where <isNotEmpty parameter="menuId">menuId = '#menuId#'</isNotEmpty>
</update>
<insert id="insertAdminMenu">
insert into adminMenu(menuId, sortNo, menuName)
values('#menuId#', '#sortNo#', '#menuName#')
</insert>
<delete id="deleteAdminMenu">
delete from adminMenu where menuId = '#menuId#'
</delete>
<select id="selectAdminMenu">
select menuId, menuName, sortNo
from adminMenu
where 1 = 1 <isNotEmpty parameter="menuId">and menuId = '#menuId#'</isNotEmpty>
</select>
<select id="selectAdminMenuCount">
select count(*) as cnt
from (<include refId="selectAdminMenu" />) as a
</select>
</query>
DML 기능 별로 노드를 구성하여 추가한다. 대소문자에 주의하여야 하며, 다음 네가지 노드를 제공한다.
select : SELECT 를 위한 노드
insert : INSERT 를 위한 노드
update : UPDATE 를 위한 노드
delete : DELETE 를 위한 노드
insert : INSERT 를 위한 노드
update : UPDATE 를 위한 노드
delete : DELETE 를 위한 노드
각 노드는 SQL 문장을 포함하고 있으며 제어명령을 통해 데이터를 비교하여 쿼리를 실행할 수 있다.
제어명령에는 다음의 다섯가지가 제공된다.
isEmpty : 지정한 parameter 가 공백이면 실행
isNotEmpty : 지정한 parameter 가 공백이 아니면 실행
isEqual : 지정한 parameter 가 compareValue 와 일치하면 실행
isNotEqual : 지정한 parameter 가 compareValue 와 일치하지 않으면 실행
include : refId 에 지정한 SQL을 삽입한다.
isNotEmpty : 지정한 parameter 가 공백이 아니면 실행
isEqual : 지정한 parameter 가 compareValue 와 일치하면 실행
isNotEqual : 지정한 parameter 가 compareValue 와 일치하지 않으면 실행
include : refId 에 지정한 SQL을 삽입한다.
4. DTO(Data Transfer Object) 만들기
DKSQL은 데이터의 관리를 구조적이고 명확히 하기 위해 DTO를 사용한다. DTO란 쉽게 말하자면 데이터를 묶은 그룹이라고 생각하면 된다.
DTO는 위 테이블의 데이터를 담을 것이다. 이 DTO 는 다음과 같이 만든다.
File Name : AdminMenuDto.asp
Public Class AdminMenuDto
Public MenuId
Public MenuName
Public SortNo
End Class
Public Class AdminMenuDto
Public MenuId
Public MenuName
Public SortNo
End Class
이제 adminMenu Table 의 데이터를 가져와서 조작하기에 필요한 모든 준비를 끝냈다. 그럼 다음 문서에서 실 사용 예를 들어서 각 기능에 대하여 설명해 보도록 하겠다.
'WEB TIP > ASP' 카테고리의 다른 글
DKSQL 활용하기 (0) | 2009.07.27 |
---|---|
SVN (0) | 2008.11.18 |
HTML 제거 함수 (0) | 2008.11.13 |
유입경로 함수 (0) | 2008.11.13 |
SQL Injection (0) | 2008.11.13 |