ASP에서 오라클 DB를 이용하는 방법 [출처] ASP에서 오라클 DB를 이용하는 방법 |작성자 항해자  


준비

여기서 진행할 개발 환경은 Oracle8i, IIS5.0, Windows2000 Professional이다. 그리고 하나의 테이블을 오라클 데이터베이스에 생성하여 MYTABLE1이라고 명명하였다.

 

이 테이블의 내용은 다음과 같다.

ID(type: number) User Name(type: varchar2) Phone(type: varchar2) Email(type: varchar2)
100 Colin Tong 999-999-8888 colinjava@hotmail.com
111 John White 888-888-8888 johnw@yahoo.com
101 Don Wod 416-333-3344 donwod@test.com

DB 접속 및 데이터 가져오기

 

1. OO4O 객체 OraSession과 오라클에 접속하기 위한 OraDatabse 인터페이스를 생성한다. 우선 CreateObject를 통해 OraSession을 생성하고 오라클에 접속하기 위해 OraSession의 OpenDatabse를 이용하여 OraDatabse를 생성한다.

 

방법은 다음과 같다.

<% 
Set OraSession = CreateObject("OracleInProcServer.XOraSession") 
Set OraDatabase = OraSession.OpenDatabase("", _ 
       "username/password", Cint(0)) 
%>

 

여기서 username과 password는 데이터베이스의 사용자 이름과 암호를 의미한다.

 

2. SQL문을 실행하여 OraDynaset 객체를 생성한다. 레코드셋을 만들기 위해 CreateDynaset 또는 DbCreateDynaset 메쏘드를 이용할 수 있다.

<% 
'execute SQL
Set OraDynaset = OraDatabase.DbCreateDynaset( _ 
      "select * from mytable1", cint(0)) 
%>

 

3. 데이터를 가지고온 후 생성된 객체를 제거한다.

<% 
Do While(OraDynaset.EOF = FALSE)  
        Response.write(OraDynaset.Fields("ID")) 
        Response.write(OraDynaset.Fields("UserName")) 
        ... others ...  
        ... ... 
        OraDynaset.MoveNext 
Loop 
'OraSession 제거
Set OraSession = Nothing 
%>


 

데이터 레코드 수정

 

1. SQL문을 이용하여 OraDynaset 객체를 생성한다.

<% 
'ID=fID인 레코드를 가지고 오기 위해 OraDynaset 객체 생성
Set OraDynaset = OraDatabase.CreateDynaset(_ 
      "select * from MYTABLE1 where ID= "& fID, cint(0)) 
%>

 

여기서 fID는 수정 또는 삽입하고자 하는 ID 필드의 값이다.

 

2. 수정 또는 삽입을 위해 OraDynaset을 실행시킨다.

<% 
'레코드가 ID=fID인 필드를 Edit 메쏘드를 이용하여 수정
'또는 새로운 레코드 삽입을 위해 AddNew 이용

OraDynaset.Edit 
OraDynaset.Fields("Phone").Value = fPhone 
OraDynaset.Update 
     
' 생성된 세션 제거
Set OraSession = Nothing 
%>


 

데이터 레코드 삭제

 

OraDynaset을 이용하여 원하는 레코드를 삭제할 수 있다. 아마 위에 설명한 Edit, Update, AddNew를 완전히 이해했다면 어렵지 않게 레코드를 삭제할 수 있을 것이다. 삭제하고자 하는 레코드셋을 OraDynaset으로 생성한 후 다음과 같이 Delete 메쏘드를 이용하면 된다.

<% 
'위 조건에 대한 모든 레코드 삭제
OraDynaset.Delete 
%>


 

Oracle8i로부터 레코드를 검색하고 수정하는 예제 코드

 

1. 데이터 가져오기

<% 
    'OLE 객체를 위한 변수 선언
     Dim OraSession
     Dim OraDatabase
     Dim OraDynaset
     
     
    'OraSession 객체 생성
     Set OraSession = CreateObject("OracleInProcServer.XOraSession") 
     
    'OraDatabase 객체 생성
    '오라클 DB에 접속하기 위한 자신의 username과 password 사용할 것
     Set OraDatabase = OraSession.OpenDatabase("", "user/password", _ 
         Cint(0)) 
        
    'SQL문을 실행하여 OraDynaset 객체 생성
     Set OraDynaset = OraDatabase.DbCreateDynaset(_ 
         "select * from mytable1", cint(0)) 
%> 
<html><body> 
<H5>OO4O를 이용하여 오라클에 있는 MYTABLE1 테이블의 모든 레코드 가져오기</H5>
<table border=1 ID="Table1"> 
<% 
     Do While(OraDynaset.EOF = FALSE)  
       Response.Write("<tr><td>") 
       Response.write(OraDynaset.Fields("ID")) 
       Response.Write("</td><td>") 
       Response.write(OraDynaset.Fields("UserName")) 
       Response.Write("</td><td>") 
       Response.write(OraDynaset.Fields("Phone")) 
       Response.Write("</td><td>") 
       Response.write(OraDynaset.Fields("Email")) 
       Response.Write("</td></tr>") 
       OraDynaset.MoveNext 
     Loop 
         
     'OraSession 객체 제거
     Set OraSession = Nothing 
%> 
</table> 
</body></html>

 

2. 데이터 수정

<% 
    'OLE 객체를 위한 변수 선언
     Dim OraSession
     Dim OraDatabase
     Dim OraDynaset
         
     '폼에서 submit한 필드 값을 받음
     fID = request.form("ID")
     fUserName = request.form("UserName")
     fPhone = request.form("Phone")
     fEmail = request.form("Email")
         
     'OraSession 객체 생성
     Set OraSession = CreateObject("OracleInProcServer.XOraSession")
         
     'OraDatabse 객체 생성
     Set OraDatabase = OraSession.OpenDatabase("", "user/password", _
         Cint(0))  
         
     'ID=fID인 레코드를 위해 OraDynaset 객체 생성
     Set OraDynaset = OraDatabase.CreateDynaset(_ 
         "select * from MYTABLE1 where ID= "& fID, cint(0)) 
     
    '레코드가 ID=fID인 필드 업데이트
     Do While(OraDynaset.EOF = FALSE)  
        OraDynaset.Edit 
        OraDynaset.Fields("UserName").Value = fUserName 
        OraDynaset.Fields("Phone").Value = fPhone 
        OraDynaset.Fields("Email").Value = fEmail 
        OraDynaset.Update 
        OraDynaset.MoveNext 
     Loop 
%> 
<html><body> 
<H5>OO4O를 이용하여 오라클의 MYTABLE1에 있는 레코드 수정</H5>
    레코드 (ID=<%=fID%>) 가 성공적으로 수정되었습니다!<br>
<%
       'OraSession 객체 제거
        Set OraSession = Nothing 
%>
</body></html>


+ Recent posts