database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 11419 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 11419
ASP에서 오라클 DB를 이용하는 방법
작성자
정재익(advance)
작성일
2002-07-21 19:55
조회수
10,785

세계적으로 많이 사용되고 있는 데이터베이스 중 하나가 바로 오라클이다. 대개 ASP를 이용할 경우 데이터베이스는 SQL 서버를 사용하는 것이 정석이지만 ASP를 통해 오라클에 접속하여 데이터를 처리하는 것 역시 불가능한 일이 아니다. 이번 시간엔 바로 ASP를 이용하여 오라클 데이터를 처리하는 방법에 대해 살펴볼 것이다.

 

시작하기 전에 OO4O(Oracle Objects for OLE)에 대해 먼저 알아야 하겠다. OO4O는 마이크로소프트의 OLE(Object Linking and Embedding) 표준을 이용하여 클라이언트 프로그램으로부터 오라클에 직접 접속할 수 있도록 도와주는 오라클 미들웨어로 생각하면 좋을 것이다. 물론 ODBC를 사용하여 접속할 수도 있다. 하지만 개인적인 의견이긴 하지만 PL/SQL을 완전히 지원하는 OO4O를 이용하는 것이 더 좋은 방법이라고 생각한다. 만일 Oracle8i를 완벽히 설치했다면 이미 OO4O를 사용할 준비는 다 되어있는 것이다. 만일 그렇지 않다면 오라클 공식 홈페이지에 접속하여 관련 프로그램을 다운로드 받아 설치해야 할 것이다.

 

시작하기 전에 몇 가지 더 알아야 할 용어들이 있다. 그것은 오라클이 VB 개발자들을 위해 개발한 Orasession 및 OraDynaset 객체와 OraDatabase 인터페이스이다. OraSession 객체는 애플리케이션에서 사용하는 OraDatabase, OraConnection 및 OraDynaset 컬렉션들을 관리한다. 이 객체는 OO4O의 메쏘드로 생성하는 것이 아니라 ASP의 CreateObject 메쏘드를 이용하여 생성한다. OraDatabse 인터페이스는 사용자 세션을 오라클 데이터베이스에 알려 주고, SQL 및 PL/SQL을 실행하는데 필요한 속성과 메쏘드를 제공한다. OraDynaset은 BOF, EOF, Bookmark, Connection과 같은 속성과 AddNew, Update, Delete, Edit, Refresh, Clone 등의 메쏘드를 가지고 있다.

 

이제 ASP를 이용하여 오라클 데이터를 처리해 보도록 하자.

 

 

--------------------------------------------------------------------------------

 

준비

 

여기서 진행할 개발 환경은 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)) 
%> 
 
OO4O를 이용하여 오라클에 있는 MYTABLE1 테이블의 모든 레코드 가져오기
<% Do While(OraDynaset.EOF = FALSE) Response.Write("") OraDynaset.MoveNext Loop 'OraSession 객체 제거 Set OraSession = Nothing %>
") Response.write(OraDynaset.Fields("ID")) Response.Write("") Response.write(OraDynaset.Fields("UserName")) Response.Write("") Response.write(OraDynaset.Fields("Phone")) Response.Write("") Response.write(OraDynaset.Fields("Email")) Response.Write("
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 %>
OO4O를 이용하여 오라클의 MYTABLE1에 있는 레코드 수정
레코드 (ID=<%=fID%>) 가 성공적으로 수정되었습니다!
<% 'OraSession 객체 제거 Set OraSession = Nothing %>
[Top]
No.
제목
작성자
작성일
조회
11475MS-SQL DTS이용시..주의점..
정재익
2002-07-25
8776
11469오라클 Install
정재익
2002-07-25
11770
11465오라클 강좌 (1)
정재익
2002-07-25
18767
11419ASP에서 오라클 DB를 이용하는 방법
정재익
2002-07-21
10785
11392FreeBSD에서 리눅스용 오라클 애플리케이션 서버 사용하기
정재익
2002-07-18
7146
11391FreeBSD에서 리눅스용 오라클 사용하기
정재익
2002-07-18
7414
11342파워 OCP 강좌
정재익
2002-07-12
19090
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다