46
웹웹웹웹웹웹 웹웹 웹 웹웹 이이이 (oracle @ssu.ac.kr ) DB & JDBC

웹프로그래밍 설계 및 실습 이경화 ([email protected])[email protected] DB & JDBC

Embed Size (px)

Citation preview

Page 1: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

웹프로그래밍 설계 및 실습

이경화 ([email protected])

DB & JDBC

Page 2: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

First off

http://java.sun.com/http://java.sun.com/j2se/1.4.2/docs/api/index.htmlhttp://java.sun.com/javase/6/docs/api/ [ 영문 API_1.6]http://apollo89.com/java/ko/api/ [ 한글 API_1.6]http://en.wikipedia.org/wiki/Main_Page [Wikipedia]

2

Page 3: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Contents

• Overview of DB & DBMS• Overview of SQL(Structured Query Language)• Overview of JDBC (Java DB Connection Driver)• JDBC API in Java

3

Page 4: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

DB & DBMS ?

• DB (Database)– 데이터를 조직적으로 통합해 구조화시켜 놓은 데이터의 집합체

• DBMS (Database Management System)– 데이터베이스를 생성하고 검색하며 , 추가 , 삭제를 원활히

하려는 프로그램의 집합

• 특징– 데이터 구조 정의– 데이터 검색과 갱신– 데이터 추가와 삭제– 복수의 사용자로부터의 데이터 처리 및 실행 제어– 정보보호

Page 5: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

DBMS (Database Management

System)?• A DBMS(Database Management System) is a

set of computer programs that controls the creation, maintenance, and the use of the database of an organization and its end users.

• It provides facilities for controlling data access, enforcing data integrity, managing concurrency controlled, restoring database.

Page 6: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

DBMS 데이터 모델

• 계층형 데이터 모델• 네트워크형 데이터 모델• 관계형 데이터 모델• 객체지향 데이터 모델

Page 7: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

SQL (Structured Query Language)?• 관계형 데이터베이스로부터 데이터 관리를 위해 고안된

컴퓨터 언어이다 . • 자료의 검색과 수정 , 데이터베이스 스키마 생성과 수정 ,

데이터베이스 객체 접근 조정 관리 역할을 포함한다 .• 관계형 모델을 위한 최초의 언어이며 많은 관계형

데이터베이스들이 SQL 을 사용하고 있다 .

Page 8: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

SQL (Structured Query Language)?• SQL is a database computer language

designed for managing data in RDBMS (Relational DataBase Management Systems).

• Its scope includes data query and update, schema creation and modification, and data access control.

• SQL was one of the first languages for relational model and became the most widely used language for relational databases.

Page 9: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

SQL 명령어 (1/2)

• DDL (Data Definition Language)– computer language for defining data

structures– 데이터 정의

• DML (Data Manipulation Language)– computer languages used by computer

programs and/or database users to insert, delete and update data in a database

– 데이터 조작• DCL (Data Control Language)

– computer language and a subset of SQL used to control access to data in a database

– authorizes users and groups of users to access and manipulate data

– 데이터 제어

Page 10: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

SQL 명령어 (2/2)

SQL

DDL

Create Table

Alter Table

Drop Table

테이블 생성

테이블 구조 변경

테이블 삭제

DML

Select

Insert

Update

Delete

데이터 조회

데이터 추가

데이터 수정

데이터 삭제

DCLGrant

Revoke

권한 부여

권한 해제※ 참고자료 첨부

Page 11: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Create Table 문장

• 기본 테이블 생성• 구문

• 사용 예

• SQL 이 지원하는 데이터 타입– INTEGER, SMALLINT, FLOAT(n), DECIMAL(i,j), CHAR(n),

VARCHAR(n), DATE, TIME …

SQL 기본 - DDL

CREATE TABLE 기본 _ 테이블 _ 이름( 열 _ 이름 데이터 _ 타입 [NOT NULL]{, 열 _ 이름 데이터 _ 타입 [NOT NULL]}*);

create table orders( order_num integer not null , cost integer not null , good_name char(20) not null);

※ 참고자료 첨부

Page 12: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Alter Table 문장

• 생성된 테이블에 새로운 열 추가• 구문

• 사용 예

ALTER TABLE 테이블 _ 이름ADD 열 _ 이름 데이터 _ 타입 ;

alter table ordersadd address char(60);

SQL 기본 - DDL

Page 13: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Drop Table 문장

• 생성된 기본 테이블 제거• 구문

• 사용 예

DROP TABLE 기본 _ 테이블 _ 이름 ;

drop table orders;

SQL 기본 - DDL

Page 14: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Insert 문장

• 기존 테이블에 행을 삽입• 구문

• 사용 예

INSERT INTO 테이블 [( 열 _ 이름 {[, 열 _ 이름 ]}*] VALUES ( 값 _ 리스트 );

insertinto orders (order_num, cost, good_name, address) values (1, 300, ‘ 컴퓨터’ , ‘ 서울시 동작구 상도동’ );

SQL 기본 - DML

insertinto orders (order_num, cost, good_name) values (2, 400000, ‘ 컴퓨터’ );

Page 15: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Select 문장 (2/2)

※ SQL 에서 제공하는 집단함수 (aggregation function)– 테이블의 한 열의 값 집합에 적용– COUNT, SUM, AVG, MAX, MIN

※ LIKE 문 ( 정규 문법 표현 )

– ‘%’ 는 어떤 길이의 어느 문자와도 매치

select count(*) from orderswhere cost > 500;

select * from orderswhere address like ‘ 서울 %’;

SQL 기본 - DML

Page 16: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Update 문장

• 기존 레코드의 열 값을 변경• 구문

• 사용 예

UPDATE 테이블SET 열 _ 이름 = 산술식 {, 열 _ 이름 = 산술식 }*

[WHERE 조건 ];

update ordersset cost = cost * 1000where cost < 500;

SQL 기본 - DML

Page 17: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Delete 문장

• 기존 테이블의 행을 삭제• 구문

• 사용 예

DELETEFROM 테이블[WHERE 조건 ];

deletefrom orderswhere order_no = 1;

SQL 기본 - DML

deletefrom orderswhere good_name = ‘ 컴퓨터’ ;

권장

Page 18: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC (Java DataBase Connectivity)?• 자바 프로그래밍 언어로 만들어진 데이터베이스 조작

인터페이스• 다양한 관계형 데이터베이스를 위한 일관된 인터페이스를

제공하는 API 집합• 프로그래머가 SQL 요구를 만드는데 사용할 , 일련의

객체지향 프로그램의 클래스들을 정의• 어떤 데이터베이스를 사용하더라도 JDBC 드라이버만

제공 된다면 코드 수정 없이 바로 적용 가능• java.sql package

Page 19: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC (Java Database Connectivity)?• JDBC is API for the Java programming

language that defines how a client may access a database.

• It provides methods for querying and updating data in a database.

• JDBC is oriented towards relational databases.• JDBC was first introduced in the Java 2

Platform, Standard Edition, version 1.1 (J2SE).• JDBC is implemented via classes in the java.sql

package

Page 20: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC Structure

출처 : Introduction to JDBC, SUN

Page 21: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC Driver Type (1/2)

• Type I: Bridge : JDBC-ODBC 브리지 타입– JDBC 에 들어온 모든 명령을 ODBC 형으로 변환해 ODBC

드라이버로 전달

• Type II: Native : Native-API/Partly Java 타입– JDBC 에 들어온 데이터베이스 명령을 DBMS 시스템

호출에 맞춰서 변환한 후 그 명령을 전달

• Type III: Middleware : 명령어 변환 타입– JDBC 에 들어온 모든 명령을 데이터베이스 접근 미들웨어로

전송하고 이를 데이터베이스에 적합한 명령어로 변환

• Type IV: Pure : 직접 전송 타입– 자바로 구현된 JDBC 로 네트워크를 통해 데이터베이스로

직접 전송

Page 22: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC Driver Type (2/2)

Native-Protocol드라이버

자바 애플리케이션

JDBC 드라이버 관리자

JDBC-ODBC드라이버

Native-API 드라이버

Net-Protocol드라이버

ODBC 드라이버 JDBC 미들웨어

DBMS

JDBC API

JDBC 드라이버 API

CLI (.lib)

JDBC loads a driver

Page 23: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC API in Java

JDBC 프로그래밍 단계 클래스

JDBC 드라이버 로드

데이터베이스 연결

Statement 생성

SQL 문 전송

결과 받기

연결 해제

Java.sql.PreparedStaement

System.setProperty()

JDBC driver class

Java.sql.Connection

Java.sql.Statement

Java.sql.Statement

Java.sql.ResultSet

Java.sql.Connection close()

executeQuery()

executeUpdate()

Class.forName()

getConnection()

createStatement()

prepareStatement()

resultSet()

메서드

Page 24: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC class workflow

DriverManager

Connection

getConnection() close()

Statement

PreparedStatement

subclasscreateStatement()

prepareStatement()

ResultSet

executeQuery()executeUpdate(

)

dataType

getXXX()

setXXX()

Page 25: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC 프로그래밍 (1/6)

• JDBC 드라이버 로드– 데이터베이스에 접속하기 위해서는 해당 JDBC 드라이버를

로드 해야함

– 드라이버에 따른 클래스의 이름• ODBC : sun.jdbc.odbc.JdbcOdbcDriver• Microsoft SQL -

com.microsoft.jdbc.sqlserver.SQLServerDriver• MySQL - com.mysql.jdbc.Driber• Oracle - oracle.jdbc.driver.OracleDriver

JSP Programming with a WorkbookJSP Programming with a Workbook2525

형식 Class.forName("JDBC 드라이버 클래스 이름“ );

예 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Page 26: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC 프로그래밍 (2/6)

• 데이터베이스 연결 (Connection)– DriverManager 클래스의 getConnection() 메소드를 사용하여

데이터베이스에 연결

• 첫 번째 인자 형식 (url)

형식

Connection conn =

DriverManager.getConnection(String url, String user, String

password);

예Connection conn =

DriverManager.getConnection(url, “khlee”, “1111”);

형식 jdbc:mysql://[hostname]:[port number]/[DB name]

예jdbc:oracle:thin:@127.0.0.1:1521:XE

jdbc:mysql://127.0.0.1:3306/mysql

Page 27: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC 프로그래밍 (3/6)

• Statement 생성 (Statement, PreparedStatement)– SQL 문 수행– Connection 클래스의 createStatement() 메소드 사용

– PreparedStatement • SQL 문을 미리 만들어 변수를 입력하는 방식• 유지보수 측면에서 유리함• Statement 클래스에 해당하는 메소드를 모두 사용할 수 있음

형식 Statement stmt = conn.createStatement()

Page 28: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC 프로그래밍 (4/6)

prepareStatementStatement

쿼리문이 정적인 경우 적합쿼리문이 동적인 경우 적합

쿼리문을 컴파일 해 저장 후 호출 시 인자 대입해 실행

쿼리문과 인자를 컴파일 후 실행

try{ String sql = “insert into member(id, pw) values(‘”+id+ “’,’” +pw+ “’)”; stmt = conn.createStatement(); rs = stmt.exequteUpdate(sql);}catch(SQLException sql){  sql.toString();} 

try{  String sql = “insert into member (id, pw) values(?,?)”;  pstmt = conn.prepareStatement(sql);   pstmt.setString(1, id); pstmt.setString(2, pw); rs = pstmt.exequteUpdate();}catch(SQLException sql){  sql.toString();} 

statement vs. prepareStement

Page 29: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC 프로그래밍 (5/6)

• SQL 문 전송 (executeQuery)– SQL 문 처리– executeQuery() 메소드 : SELECT 문 처리

– executeUpdate() 메소드 : INSERT, UPDATE, DELETE 문 처리

형식 stmt. executeQuery(String sql);

예 stmt. executeQuery("SELECT * FROM tblMember");

형식 stmt.stexecuteUpdate(String sql);

stmt.stexecuteUpdate("INSERT INTO tblMember (id, pwd,

name, phone)

VALUES ('melon', '4444', ' 이수용 ', '019-999-9999')");

Page 30: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

JDBC 프로그래밍 (6/6)

• 처리 결과 리턴 (ResultSet)– 결과 확인– ResultSet 클래스에서 제공하는 메소드 (Demo program 참고 )

• 연결 해제 (close)– 모든 처리를 끝낸 후 close() 메소드를 사용하여 연결 해제

JSP Programming with a WorkbookJSP Programming with a Workbook3030

Page 31: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

• DML : select (prepareStatement)

//SELECT field1, field2 FROM table_name WHERE field1=‘ 김’

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

conn = db.dbConn;

String sql = "SELECT seq, userid, username,userpw FROM user WHERE sql=?“;

pstmt = conn.prepareStatement(sql);pstmt.setInt (1, seqVal);

JDBC SQL (1/6)

31

Page 32: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

ResultSet rs = pstmt.executeQuery();

while (rs.next ()) { int seqVal = rs.getInt (“seq"); String idVal = rs.getString(“userid"); String nameVal = rs.getString(“username"); String pwVal = rs.getString(“userpw"); System.out.println(seqVal + ”,” + idVal + ”,” + nameVal + pwVal +”/n”);}

32

Page 33: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

• DML : insert (prepareStatement)

//INSERT INTO user(field1, field2) VALUES(‘val1’,’val2’)

int insCnt = 0; Connection conn = null; PreparedStatement pstmt = null conn = db.dbConn;

String sql = “INSERT INTO user (seq, userid, username, userpw) VALUES(user_seq.nextval, ?,?,?)”;pstmt = conn.prepareStatement(sql);pstmt.setString (1, userid);pstmt.setString (2, username);pstmt.setString (3, userpw);insCnt = pstmt.executeUpdate();System.out.println (insCnt + " rows were inserted");

JDBC SQL (2/6)

33

Page 34: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

• DML : insert (createStatement) //INSERT INTO member(field1, field2) VALUES(‘val1’,’val2’) int insCnt = 0;

Connection conn = null;

Statement stmt = null;

conn = db.dbConn;

String sql = “INSERT INTO user(userid, username, userpw) VALUES ( ‘khlee', ‘ 이경화’ ,‘1111‘)”;

stmt = conn.createStatement();

insCnt = stmt.executeUpdate(sql); System.out.println (insCnt + " rows were inserted");

JDBC SQL (3/6)

34

Page 35: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

• DML : update (prepareStatement)

//UPDATE table_name SET field1='value‘, field2='value2' WHERE field3='010‘int seqVal = Integer.parseInt(request.getParameter(“seq")); String useridVal = request.getParameter(“userid"); String usernameVal = request.getParameter(“username"); String userpwVal = request.getParameter(“userpw");

JDBC SQL (4/6)

35

Page 36: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

int uptCnt = 0; Connection conn = null;

PreparedStatement pstmt = null; conn = db.dbConn;

String sql = “UPDATE member SET userid=?, username=?, userpw=? WHERE seq=?";

pstmt = conn.prepareStatement(sql);pstmt.setString(1, useridVal);pstmt.setString(2,usernameVal);pstmt.setString(3,userpwVal);pstmt.setInt(4,seqVal);

uptCnt = pstmt.executeUpdate();System.out.println (uptCnt + " rows were updated");

36

Page 37: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

• DML : delete (prepareStatement)

//DELETE FROM table_name WHERE field1='value‘ int seqVal = Integer.parseInt(request.getParameter(“seq"));

int delCnt = 0;

Connection conn = null;

PreparedStatement pstmt = null;

conn = db.dbConn;

String sql = “DELETE FROM member WHERE seq=?”;

pstmt = conn.prepareStatement(sql); pstmt.setInt(1,seqVal);

uptCnt = pstmt.executeUpdate(); System.out.println (delCnt + " rows were deleted");

JDBC SQL (5/6)

37

Page 38: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

Demo Program

• #1 Database, Table, Record 생성• #2 connTest

Page 39: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

#1. Database 접속

Mysql 접속명령mysql –ulkh –p0000;use mydb;

Oracle 접속명령sqlplus lkh/0000;

Page 40: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

DROP TABLE IF EXISTS user;CREATE TABLE user ( seq int(11) NOT NULL auto_increment, userid varchar(20) not NULL, username varchar(20) default NULL, PRIMARY KEY (seq));

#1. Database, Table, Record 생성 (1/3)

• Create Table

• Insert Datainsert into user values('1', 'myid', ' 홍길동 ');insert into user values('2','misskim',' 김나나 ');insert into user values('3','another',' 김나나 ');select * from user;

• Create DatabaseCREATE DATABASE mydb /* DEFAULT CHARACTER SET euckr */;

이미 생성되어 있을 경우 생성하지 않음Oracle 일 경우 기본은 XE

MySQL 일 경우

Page 41: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

DROP TABLE user;CREATE TABLE user ( id number NOT NULL, userid varchar2(20) not NULL, name varchar2(20) default NULL, PRIMARY KEY (id));

#1. Database, Table, Record 생성 (2/3)

• Create Table

Oracle 일 경우

• Create Sequence ( 시퀀스 )Create sequence member_seq increment by 1 -- 증가값 (1 씩증가 )start with 1 -- 시작값 (1 부터 시작 )nomaxvalue -- 최대값 제한 없음nocyclenocache;

Page 42: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

42

#1. Database, Table, Record 생성 (3/3)Oracle 일 경우

• Insert Datainsert into user values(member_seq.nextval, 'myid', ' 홍길동‘ ,’1111’);insert into user values(member_seq.nextval,'misskim',‘ 아무개‘ ,’1111’);insert into user values(member_seq.nextval,'another',' ‘김나나 ,’1111’);select * from user;

1. 시퀀스 이용해서 데이터 삽입insert into 테이블명 ( 필드명 ..) values ( 시퀀스명 .nextval, ..);

2. 현재 시퀀스 값 읽어 오기select 시퀀스명 .currval from 테이블명 ;

3. 시퀀스 삭제drop sequence 시퀀스명 ;

Page 43: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

package db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.PreparedStatement;

public class DBManager {

public Connection dbConn() {Connection conn = null;

//protocol://[hostname]:[port number]/[DB name] String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";

//String url= "jdbc:mysql://127.0.0.1:3306/mydb"; String uid = "lkh"; String upw = "0000";

try { Class.forName("oracle.jdbc.driver.OracleDriver");

//Class.forName("com.mysql.jdbc.Driver").newInstance();

conn = DriverManager.getConnection(url , uid, upw); } catch(Exception e) { e.printStackTrace(); } return conn;

}

db>DBManager.java

Page 44: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

public void dbClose(Connection conn, PreparedStatement stmt, ResultSet rs) {

try {if(rs != null ) { rs.close(); } if(stmt != null) {stmt.close(); }if(conn != null) {conn.close();}

} catch (Exception e ) { e.printStackTrace();

} }

public void dbClose(Connection conn, PreparedStatement stmt) {try {

if(stmt != null) {stmt.close(); }if(conn != null) {conn.close();}

} catch (Exception e ) { e.printStackTrace();

} }}

Page 45: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

#2. connTest (2/3)

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR" import="db.DBManager, java.sql.*"%>

<html><head><title>JDBC connection tset</title></head><body><h3>Demo #3 : DB 연결 테스트 </h3><hr><%DBManager db = new DBManager();Connection conn = db.dbConn();String result = "";if(conn != null) { result = "success";} else { result = "faild";}%>DB 연결 결과 : <%=result%></body></html>

db>conn_test.jsp

Page 46: 웹프로그래밍 설계 및 실습 이경화 (oracle@ssu.ac.kr)oracle@ssu.ac.kr DB & JDBC

#2. connTest (3/3)

http://127.0.0.1/db/conn_test.jsp