본문 바로가기

JAVA를 잡아라!/Java

JSP/oracle DB 연동 이용 간단 회원관리기초풀그림

JSP와 오라클 DB 연동을 이용한 간단한 회원관리기초프로그램(1)

이승호 강사(javateacher@naver.com)

1. 회원 table 생성

create table member (
id varchar2(12) not null primary key,
passwd varchar2(12),
name varchar2(10),
jumin1 varchar2(6),
jumin2 varchar2(7),
email varchar2(30),
blog varchar2(50),
reg_date date
);

2. JDBC 설정

1) Oracle jdbc드라이버 접속

형식) jdbc:oracle:thin@HOST(IP):1521:SID
예) jdbc:oracle:thin@127.0.0.1:1521:ORCL
Cf) Mysql의 경우
예) jdbc:mysql://localhost:3306/ID
2) Oracle 드라이버 위치 및 설정
* 드라이버의 원래의 위치 :
C:\oracle\product\10.2.0\db_1\jdbc\lib (oracle 10g 경우)
; Classes.jar 혹은 Classes.zip
; class path에 반영 혹은 Web Container(WAS)의 lib 폴더에 반영(복사)


3) jdbc 드라이버 프로그램 작성 과정 개요

Package import
        JDBC 드라이버 Load
        Connection 객체 생성
        Statement 객체 생성
        Query 수행
        Resulttest 객체로부터 데이터 추출
        Resultest Close
        Statement 객체 Close
        Connection 객체 Close

4) jdbc 드라이버 프로그램 적용 과정

Step 1) 드라이버 로딩

Class.forName(“oracle.jdbc.driver.OracleDriver”);

Cf) mysql : Class.forName(“com.mysql.jdbc.Driver”);


Step 2) Connection 객체 생성

Connection conn =
DriverManager.getConnection(“jdbc:oracle:thin@127.0.0.1:1521:ORCL”,”scott”,”tiger”);

Cf) mysql :

Connection conn =
DriverManager.getConnection(“jdbc:mysql://localhost:3306/myID”,
”ID”,”PASS”);

Step 3) Statement(preparedStatement) 객체 생성

SQL Query 생성, 실행

Statement stmt = con.createStatement();

Step 4) Query 수행

ResultSet rs = stmt.excuteQuery(“select * from table명”);
ResultSet rs = stmt.excuteUpdate(“update table명 set field명 = ‘값’
where field명=’값’“);
; Insert, Update, Delete문 일 경우

Step 5) ResultSet 처리

while (rs.net()) {

out.println(rs.getString(“id”));
out.println(rs.getString(“password”));

}


참고) preparedStatement 객체

Connection 객체의 preparedStatement() 메소드 사용하여 객체 생성.

# Statement 객체와의 차이점

preparedStatement 객체는 SQL 문장이 미리 컴파일 되고, 실행 시간 동안 인수 값을 위한 공간을 확보할 수 있다. 즉 미리 컴파일 되기 때문에 Query 수행 속도가 Statement보다 빠르다. 또한 작은 따옴표(‘) 처리문제가 Statement에 비해 원활.

예) I’m coming 이라는 구문의 경우

Statement 객체 : I’’m coming ; 두번 표시
preparedStaement 객체 : I’m coming ; 한번 표기(작은 따옴표문제
자동 처리)

# preparedStatement 객체는 이럴 때 유용 !

1)        동일한 질의문을 특정 값만 바꾸어서 여러 번 실행할 때.
2)        다량의 데이터를 다룰 시 질의문을 정리할 필요가 있을 때.
3)        인수가 많아서 질의문을 정리해야 될 필요가 있을 때.

참고) CallableStatement 객체
prepareCall() 메소드를 사용하여 객체 생성.
주로 이것은 Stored Procedure를 사용하기 위해 사용됨.
# Stored Procedure : 해당 DB SQ,L문을 저장한 것.
미리 저장된 쿼리를 사용하기 때문에 역시 수행속도가 빠름.

CallableStaement는 DB에 저장된 Stored Procedure를 단지 호출하는 것만으로도 처리가 가능하다.

# 항상 예외상황(Exception)에 대비한다.
try {
………….. JDBC 처리 구문들………..
} catch (SQLException sqle) { ……
}