준비
여기서 진행할 개발 환경은 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>
 |