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