데이터베이스와 JDBC

60
1 데데데데데데 데데 데데데 데데데데 데데데데데데 데데 데데데 데데데데 데데데데 데데데데 SQL SQL 데데 데데데 데데 데데데 데데데 데데데데데데데 데데 데데데 데데데 데데데 데데데데데데데 데데 데데데 데데데 데데데데 데데데데데데데 데데데데 데데데데 데데데데데데데 데데데데 JDBC JDBC 데데 데데 데데데 데데데 데데데 데데데 데데데데데데데 JDBC

description

데이터베이스와 JDBC. 데이터베이스 기본 개념을 이해한다 기본적인 SQL 문을 익힌다 오라클 데이터베이스의 사용 방법을 익힌다 자바에서 데이터베이스를 사용하는 JDBC 사용 방법을 익힌다. 데이터베이스 개요. 데이터베이스 (Database) 여러 사람이 공유해서 사용할 목적으로 , 체계적으로 정리된 정보를 효율적으로 관리하고 검색할 수 있는 정보의 집합 . 생활 속의 데이터베이스 휴대폰의 전화번호 목록 . ㄱ , ㄴ , ㄷ 으로 정리된 수첩의 주소록 . - PowerPoint PPT Presentation

Transcript of 데이터베이스와 JDBC

Page 1: 데이터베이스와  JDBC

11

• 데이터베이스 기본 개념을 이해한다데이터베이스 기본 개념을 이해한다

• 기본적인 기본적인 SQLSQL 문을 익힌다문을 익힌다

• 오라클 데이터베이스의 사용 방법을 익힌다오라클 데이터베이스의 사용 방법을 익힌다

• 자바에서 데이터베이스를 사용하는 자바에서 데이터베이스를 사용하는 JDBC JDBC 사용사용 방법을 익힌다방법을 익힌다

• 데이터베이스 기본 개념을 이해한다데이터베이스 기본 개념을 이해한다

• 기본적인 기본적인 SQLSQL 문을 익힌다문을 익힌다

• 오라클 데이터베이스의 사용 방법을 익힌다오라클 데이터베이스의 사용 방법을 익힌다

• 자바에서 데이터베이스를 사용하는 자바에서 데이터베이스를 사용하는 JDBC JDBC 사용사용 방법을 익힌다방법을 익힌다

데이터베이스와 JDBC

Page 2: 데이터베이스와  JDBC

22

데이터베이스 개요

데이터베이스 (Database) 여러 사람이 공유해서 사용할 목적으로 , 체계적으로 정리된 정보를 효율적으로 관리하고 검색할 수 있는 정보의 집합 .

생활 속의 데이터베이스 휴대폰의 전화번호 목록 . ㄱ , ㄴ , ㄷ 으로 정리된 수첩의 주소록 . 거의 모든 프로그램은 어떠한 형태로든 데이터베이스와 연결됨 .

데이터베이스와 DBMS 데이터베이스 관리 시스템 (DBMS, Database Management System) 데이터베이스를 구성하고 운영하기 위해 구성된 소프트웨어 시스템 오라클 , SQL 서버 등 일반적으로 알고 있는 데이터베이스 제품이 DBMS 다 .

오라클 데이터베이스와 MySQL 오라클은 전세계에서 가장 많이 사용되는 상용 DBMS. MySQL 은 무료로 중소규모 웹사이트개발에 많이 사용됨 .

Page 3: 데이터베이스와  JDBC

33

파일시스템

파일시스템 데이터를 저장한 파일을 데이터파일 (Data File) 이라고 함 . 파일시스템은 데이터를 관리하는 기본 .

파일시스템의 문제점 데이터중복 , 데이터의 불일치 . 데이터의 공유가 어려움 . 데이터 용량증가에 따른 검색효율 저하 . 데이터에 대한 보안성 미비 . 텍스트 위주의 데이터 관리 .

총무처 학생처 학과 교무처 학생

등록금고지서파일

학생DM파일

학생주소록파일

성적처리파일

친구주소록

Page 4: 데이터베이스와  JDBC

44

데이터베이스 도입 장점

중복성 최소화데이터 불일치성 해결

데이터 공유 편이성

정보 표준화 유리

데이터 보안성 제공데이터 무결성 유지

대량 데이터의 빠른 검색

다양한 데이터 관리 가능 이미지 파일 등

응용 프로그램 개발이 쉽다 .

총무처 학생처 학과 교무처 학생

데이터베이스 관리 시스템 (DBMS)데이터베이스 관리 시스템 (DBMS)

학사 관리 통합 데이터베이스( 학생 정보 , 성적 정보 , 등록금 정보 , 기타 )

Page 5: 데이터베이스와  JDBC

55

데이터베이스 구분

파일 ( 파일시스템 )

세그먼트 ( 계층형 데이터베이스 관리시스템 : HDBMS)

테이블 ( 관계형 데이터베이스 관리시스템 : RDBMS) 데이터에 관계 개념 부여 대부분의 데이터베이스가 관계형 데이터베이스

레코드타입 ( 네트워크형 데이터베이스 관리시스템 : NDB)

클래스 ( 객체지향형 데이터베이스 관리시스템 : OO/ORDB) 객체지향개념을 데이터베이스에 부여 객체지향 도입 확대로 주목 관계형의 완전한 대체는 아님 관계형 데이터베이스 + 객체지향형 데이터베이스 -> ORDB

Page 6: 데이터베이스와  JDBC

66

테이블 구성요소

테이블 데이터에서 공통 속성 분류 테이블명 : 학생정보 테이블 (MEMBER)

컬럼 데이터를 구별하기 위한 속성 컬럼 혹은 필드라 불림 컬럼 이름 : 이름 (member), 성멸 (sex), 거주지 (city)…

로우 한 줄 단위의 데이터 집합 ( 하나의 데이터 그룹 ) 첫번째 로우 : 홍길동 , 남 , 서울 , 1980, 02-345-0987

테이블 구성요소가 가지는 특징 로우는 하나의 데이터만 표시할 수 있다 . 그룹이나 배열의 형태는 허용하지 않는다 . 각각의 컬럼에는 특정한 형태의 값만을 가질 수 있다 . 모두 로우의 데이터는 해당 컬럼에서 요구하는 형태의 값만을 포함 .

Page 7: 데이터베이스와  JDBC

77

테이블 구성요소

테이블은 데이터베이스 관리의 기본단위

이름 성별 거주지 출생년도 전화번호

홍길동 남 서울 1980 02-345-0987

강동수 남 인천 1981 032-143-1239

홍길동 여 대구 1982 011-987-2321

기동차 여 서울 1980 02-432-9564

컬럼

컬럼 명

로우

홍길동 , 서울 , 1980, 02-345-0987, 남강동수 , 남 , 인천 , 1981, 032-143-1239대구 , 홍길동 , 여 , 1982, 011-987-2321기동차 , 1980, 여 , 서울 , 02-432-9564

Page 8: 데이터베이스와  JDBC

88

데이터베이스 키

데이터베이스 키 서로 다른 로우를 구분하기 위한 특징을 가진 필드 . 관계형 데이터베이스의 특징

주키 (Primary Key) 테이블내 데이터를 구분해 주는 유일한 값을 대표하는 키 . 학번 , 주민등록번호 , 접수번호 등 중복되지 않는 유일한 값 .

외래키 (Foreign Key) 테이블간의 관계를 표현 . 데이터 일관성 유지 . 대표적으로 코드 테이블을 참조하기 위해 사용 .

Page 9: 데이터베이스와  JDBC

99

데이터베이스 키

데이터베이스 키 주키와 외래키의 관계 예시

Page 10: 데이터베이스와  JDBC

1010

SQL 개요

Structured Query Language 표준화된 데이터베이스 질의어 DML(Data Manipulation Language) 과 DDL(Data Definition

Language) 로 구분

SQL 문

DDL

DML

Create Table

Alter Table

Drop Table

Select

Insert

Delete

Update

테이블 생성

테이블 구조 변경

테이블 삭제

데이터 조회

데이터 삽입

데이터 삭제

데이터 수정

Page 11: 데이터베이스와  JDBC

1111

데이터베이스 자료형

데이터베이스에 저장되는 데이터의 유형 정의 .

데이터베이스 종류마다 자료형 이름에 차이가 있음 .기본적으로 숫자형 , 문자형 , 바이너리형 , 날짜형 .

가변형 문자열은 길이를 고정하지 않기 때문에 관리에 유리 .

이미지화일등의 저장에는 바이너리형이 필요함 .

날짜 기간 검색 등을 위해서는 날짜형을 반드시 사용해야 함 .

숫자를 문자형으로 저장한 경우에는 +,- 등 연산이 되지 않음 .사용 목적에 따라 신중히 결정해야 함 .

Page 12: 데이터베이스와  JDBC

1212

오라클 데이터베이스 자료형

최대 4G byte바이너리 데이터를 처리하는 대용량 자료형BLOB

최대 4G byte2 바이트를 포함한 다국어 문자를 처리하는 대용량 자료형NCLOB

최대 4G byte1 바이트 문자를 처리하는 대용량 자료형CLOB

최대 2000 문자가변 길이 문자열 데이터VARCHAR2(size)

최대 38 자리 정수 , 실수최대 n byte 정수p= 소수점을 제외한 자리수 , s= 소수점 이하 자리수

숫자 데이터 ( 정수 , 실수 등 )

NUMBER NUMBER(n) NUMBER(p,s)

최대 2G Byte바이너리 데이터LONG RAW

최대 2G Byte가변 길이 문자열LONG

날짜형 ( 형식은 지정 가능 )DATE

최대 255 문자고정 길이 문자열CHAR(size)

크기설명자료형

Page 13: 데이터베이스와  JDBC

1313

SQL 기본 문법

create table : 테이블 생성

CREATE TABLE 테이블명 ( 컬럼명 데이터형 ( 크기 ) 옵션 , 컬럼명 데이터형 ( 크기 ), …)

CREATE TABLE member ( id NUMBER NOT NULL Primary Key, username VARCHAR2(20), dept VARCHAR2(7), birth DATE, email VARCHAR2(40))

id username

dept birth

emailid username

dept birth

email

Page 14: 데이터베이스와  JDBC

1414

SQL 기본 문법

alter table : 테이블 구성 정보 수정

형식ALTER TABLE 테이블명 [SQL 명령어 ] ( 컬럼명 데이터형 )

사용 예ALTER TABLE member add (tel varchar2(30) NOT NULL)ALTER TABLE member modify (username varchar2(10))

id username

dept birth

emailid username

dept birth

email email

tel

Page 15: 데이터베이스와  JDBC

1515

SQL 기본 문법

delete table : 테이블 삭제 형식

DROP TABLE 테이블명

사용 예DROP TABLE member

Page 16: 데이터베이스와  JDBC

1616

SQL 기본 문법

select : 테이블 데이터 조회 형식

SELECT 컬럼명 FROM 테이블명 WHERE 조건

사용 예SELECT * FROM member WHERE id = “200701”

SELECT id, username, birth FROM member WHERE id = 200701 AND name=” 홍길동”

200701 홍길동 정보기술 85.08.10 [email protected]

200702 아무개 정보기술 85.10.02 [email protected]

id username dept birth email

Page 17: 데이터베이스와  JDBC

1717

SQL 기본 문법

insert : 테이블에 데이터 추가 형식

INSERT INTO 테이블명 ( 삽입할 컬럼명… ) VALUES( 컬럼에 넣을 값… ) 사용 예

테이블에 정의된 컬럼 순서대로 모든 컬럼 데이터가 들어감 .INSERT INTO member values(200703,” 강기동” ,” 정보기술” ,”85.04.12”,”[email protected]”)

지정된 필드의 순서에 따라 데이터가 들어감 .INSERT INTO member(id,gwa,name) values(200701, ” 정보기술” ,” 홍길동” )

200701 홍길동 정보기술 85.08.10 [email protected]

200702 아무개 정보기술 85.10.02 [email protected]

id username dept birth email

200703 강기동 정보기술 85.04.12 [email protected]

Page 18: 데이터베이스와  JDBC

1818

SQL 기본 문법

update : 테이블 데이터 수정 형식

UPDATE 테이블명 set 컬럼명 = 수정할 값 1, field = 수정할 값 2 … WHERE 조건

사용 예UPDATE member set id = 200705, name=” 이쁜이” WHERE id =

200702

200701 홍길동 정보기술 85.08.10 [email protected]

200702 아무개 정보기술 85.10.02 [email protected]

id username dept birth email

200705 이쁜이

Page 19: 데이터베이스와  JDBC

1919

SQL 기본 문법

delete : 테이블 데이터 삭제 형식

DELETE FROM 테이블명 WHERE 조건

사용 예DELETE FROM member WHERE id = 200701DELETE FROM member WHERE id = 200701 AND name=” 홍길동

200701 홍길동 뉴미디어 85.08.10 [email protected]

200702 아무개 뉴미디어 85.10.02 [email protected]

id username dept birth email

Page 20: 데이터베이스와  JDBC

2020

JDBC 개념과 역할

JDBC(Java Database Connectivity) 구조 자바에서 데이터베이스를 표준화 된 방법으로 접속할 수 있도록 만든

API 규격 각 데이터베이스 접속에 대한 상세한 정보를 알 필요 없음 . 데이터베이스 벤더와 상관없이 동일한 개발이 가능함

애플리케이션

애플리케이션

오라클 DBMS

MySql DBMS

인포믹스 DBMS

JDBC드라이버관리자

구현사용

오라클 JDBC 드라이버

MySql JDBC 드라이버

인포믹스 JDBC 드라이버

Page 21: 데이터베이스와  JDBC

2121

JDBC 드라이버 유형

자바 애플리케이션자바 애플리케이션

JDBC 드라이버 관리자

DBMS DBMS DBMSDBMS DBMS

Native-Protocol 드라이버

ODBC 드라이버 JDBC 미들웨어

JDBC-ODBC 드라이버

JDBC API

JDBC 드라이버 API

Net-Protocol 드라이버

Native-API 드라이버

Page 22: 데이터베이스와  JDBC

2222

JDBC 드라이버 설치

JDBC 드라이버 선택 JDBC 드라이버는 사용하고자 하는 데이터베이스 벤더 별로 제공 됨

오라클 JDBC 드라이버 c:\jsp\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\

ojdbc14.jar

설치 디렉터리 ( 다음 중 한 가지를 이용함 ) JDK설치디렉터리 \jre\lib\ext\ 에 복사하는 방법 . 톰캣설치디렉터리 \common\lib 폴더에 복사하는 방법 이클립스 프로젝트의 WebContent\WEB-INF\lib 폴더에 복사하는

방법

Page 23: 데이터베이스와  JDBC

2323

JDBC 프로그래밍 단계

Page 24: 데이터베이스와  JDBC

2424

1. 데이터베이스 드라이버 로드

jdbc.drivers 환경변수 이용

System.setProperty( “jdbc.drivers”, “oracle.jdbc.driver.OracleDriver”);

DriverManager 클래스가 초기화 될 때 자동으로 해당 드라이버를 로드

Class.forName() 이용

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

프로그램 코드에서 로드

드라이버가 로드되면 프로그램을 작성 할 수 있는 상태가 된 것을 의미

Page 25: 데이터베이스와  JDBC

2525

2. 데이터베이스 연결

실제 데이터베이스와의 연결을 위해 Connection 클래스의 인스턴스가 필요DriverManger.getConnection() 를 이용해 레퍼런스를 얻는다 .

Connection conn = DriverManger.getConnection( JDBC_URL, ” 아이디” , ” 비밀번호” );

아이디 , 비번 : 시스템에 로그인 하는 계정이 아니라 데이터베이스 자체에서 관리하는 계정

JDBC_URL 구조

JDBC:< 서브프로토콜>:< 데이터 원본 식별자 >

JDBC:oracle:thin:@IP 주소 : 포트 :SID

IP 주소 : 오라클이 설치된 컴퓨터의 IP 주소 포트 : 리스너의 사용 포트 , 기본값 1521 SID: 오라클 인스턴스 이름으로 MySQL 에서는 DB 이름으로도 불림 , 생략가능

Page 26: 데이터베이스와  JDBC

2626

3-1. Statement 생성 및 쿼리 실행

Statement 는 SQL 문장을 수행할 수 있도록 하는 클래스

createStatement()

Statement stmt = conn.createStatement();

stmt.executeUpdate(“insert into test values(‘ “+request.getParameter("username")+“ ‘, ‘ "+request.getParameter("email")+“ ')");

Page 27: 데이터베이스와  JDBC

2727

3-2. Statement 생성 및 쿼리 실행

prepareStatement 생성 PreparedStatement 는 객체 생성시 SQL 문장을 미리 만들어 두고 변수 부는 별도의 메서드로 대입하는 방식 , 성능과 관리 면에서 권장 되는 방식임

prepareStatement()

PreparedStatement pstmt = conn.prepareStatement(“insert into test values(?,?)”);

pstmt.setString(1, request.getParameter("username");pstmt.setString(2, request.getParameter("email");

pstmt.executeUpdate(); // int count = pstmt.executeUpdate();

Statement 의 closestmt.close(); pstmt.close();

Page 28: 데이터베이스와  JDBC

2828

4. Statement 쿼리 실행

executeUpdate() 데이터의 입력 , 수정 , 삭제시 사용 리턴값 : int, 처리된 데이터의 수

Statement

Statement stmt = conn.createStatement();stmt.executeUpdate();

PreparedStatement

PreparedStatement pstmt = conn.prepareStatement(“insert into test values(?,?)”);

pstmt.executeUpdate(); // int count = pstmt.executeUpdate();

Page 29: 데이터베이스와  JDBC

2929

5-1. 결과 받기

executeQuery() 사용

select 문의 결과를 받기 위해 사용 리턴값 : ResultSet 클래스의 인스턴스 결과를 row 단위로 가져올 수 있음 : next()메서드 사용 getXXX() 메소드 : String, int, long, Date 등 다양한 데이터를 처리

ResultSet rs=pstmt.executeQuery();

while(rs.next()) { name = rs.getString(1); // or rs.getString(“name”); age = rs.getInt(2); // or rs.getInt(“email”);}

rs.close();

Page 30: 데이터베이스와  JDBC

3030

5-2. 결과 받기

Page 31: 데이터베이스와  JDBC

3131

6. 연결해제

conn.close();

Connection 을 close() 해주지 않으면 사용하지 않는 연결이 유지됨 . close() 해주지 않으면 사용하지 않으면 DB 자원을 낭비하게 됨 .

주의 : 순차적으로 close()

rs.close(); // ResultSet closeconn.close(); // connect close

Page 32: 데이터베이스와  JDBC

3232

JDBC 프로그래밍 동작 과정 - 정리

①DB 연결 : server IP, DB userID, userPass, SID(DB)

②쿼리 전달

④결과 전달

웹 서버 (톰캣 )

클라이언트

DB 서버

③ 리스너

DB 1 DB 2 DB 3

Page 33: 데이터베이스와  JDBC

3333

오라클 데이터베이스 설치 및 설정

대표적 데이터페이스인 오라클 10g Express 버전 설치

오라클 관련 설정 항목 및 포트 변경 실습

오라클 사용자 생성 및 기본 도구 사용법 실습

Page 34: 데이터베이스와  JDBC

3434

오라클 10g XE 데이터 베이스 설치 1

설치 파일의 위치 : 다운로도 또는 부록 CD설치 위치 : c:\jsp\oracle10xe

OracleXEUniv.exe 파일을 실행한다 . 라이센스 동의 설치디렉토리 c:\jsp\oraclexe 암호지정 : jsppasswd 설치시 "방화벽 관련 연결시도 " 메세지가 나오면 "허용 "을 선택한다 . 설치종료후 “데이터베이스 홈페이지 시작”은 선택하지 않는다 .

오라클 포트 변경 시작 ->실행 ->cmd 입력 ->명령 창 실행 SQL plus 실행 : sqlplus/nolog 데이터베이스 접속 : CONNECT SYSTEM/설치할 때 입력한 패스워드 포트 변경 명령 수행 : EXEC DBMS_XDB.SETHTTPPORT(8087); SQL plus 종료 : exit

Page 35: 데이터베이스와  JDBC

3535

오라클 10g XE 데이터 베이스 설치 2

오라클 데이터베이스 홈페이지 접속 브라우저에서 : http://127.0.0.1:8087/apex 사용자 이름 : SYSTEM 패스워드 : jsppasswd

사용자 생성 오라클 데이터베이스 홈페이지에서 : 관리 -> 데이터베이스 사용자 -> 사용자생성 선택

사용자 이름 : jspdbuser, 암호 – jsppasswd "생성 " 버튼을 눌러 사용자 생성

JDBC 드라이버 설치 c:\jsp\oracle10xe\app\oracle\product\10.2.0\server\jdbc\lib 에 있는

ojdbc14.jar 를

톰캐설치 디렉토리 c:\jsp\tomcat5\common\lib 에 복사 이클립스 디렉토리 c:\jsp\work\jsptest\WebContent\WEB-INF\lib 에

복사

Page 36: 데이터베이스와  JDBC

3636

이클립스 개발환경 구성 1

연결 설정 1 이클립스 실행 oracle 데이터 베이스 실행 확인 : 시작메뉴 -> 오라클 창 -> 보기 표시 -> 기타 -> Data -> Database Explorer 선택 중앙하단 -> Connecttions -> 마우스 오른쪽 버튼 -> New Connection 선택

Page 37: 데이터베이스와  JDBC

3737

이클립스 개발환경 구성 2

연결 설정 2 Oracle 10 버전 선택 -> 사용자 정보 ->

사용자 이름 : jspdbuser, 암호 : jsppasswd

오른쪽 세부 연결 정보 -> 사용자가 이용할 데이터 베이스로 USERS 입력 , Oracle JDBC 클래스 이름 oracle.jdbc.driver.OracleDriver 입력

클래스 위치 Browse 버튼 선택 -> c:\jsp\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar 선택

접속 URL : jdbc:oracle:thin:@127.0.0.1:1521 SID 생략 연결 성공 확인 : Test Connection

Page 38: 데이터베이스와  JDBC

3838

이클립스 개발환경 구성 3

Page 39: 데이터베이스와  JDBC

3939

이클립스 개발환경 구성 4

필터 설정 Database Explorer 에서

불필요한 정보를 보여주지 않도록 지정하기 위한 것 ( 해당 사용자의 데이터 베이스 객체들만 보여주게 됨 )

Disable filter 의 체크를 해제 -> Selection 으로 변경 -> jspdbuser 만 선택

이렇게 한번만 설정해두면 이후 이클립스에서 언제든지 Database Explorer 를 이용해 데이터 베이스 사용 가능

Page 40: 데이터베이스와  JDBC

4040

이클립스에서 데이터 베이스 구성 1

jsptest 프로젝트 -> WebContent 폴더 아래 -> test 폴더 아래 -> sql 폴더

sql 폴더를 선택한 상태에서 오른쪽 마우스 클릭 -> 새로작성 -> 기타 -> Data -> Sql Scrapbook Page 선택

Page 41: 데이터베이스와  JDBC

4141

이클립스에서 데이터 베이스 구성 2

파일 이름 : jdbc_test -> 완료 -> 메모장편집기 상태에서 SQL 문 작성 -> 저장

CREATE TABLE jdbc_test (username VARCHAR2(12),email VARCHAR2(50)

)

Page 42: 데이터베이스와  JDBC

4242

이클립스에서 데이터 베이스 구성 3

편집기 창에서 오른쪽 마우스 클릭 -> Run SQL 선택

Page 43: 데이터베이스와  JDBC

4343

이클립스에서 데이터 베이스 구성 4

Use an existing connection 선택 -> USERS 지정 -> 완료 -> SQL 문 실행

Page 44: 데이터베이스와  JDBC

4444

이클립스에서 데이터 베이스 구성 5

생성된 테이블 확인 Database Explorer 뷰 -> USERS Oracle 10 -> USERS -> jsptest ->

Tables -> 오른쪽 마우스 클릭 -> Refresh

Page 45: 데이터베이스와  JDBC

4545

JDBC 프로그래밍

과제 개요 간단한 등록 양식을 통해 데이터베이스 연동 프로그램 작성 오라클 데이터베이스와 JDBC 를 이용한 프로그래밍 기술 습득 이클립스 및 오라클 관리도구를 이용한 SQL 관리 실습

Page 46: 데이터베이스와  JDBC

4646

jdbctest.jsp (1)

<%@ page import="java.sql.*" %><% request.setCharacterEncoding("euc-kr"); %>

<%// 데이터베이스 연결관련 변수 선언Connection conn = null;Statement stmt = null;

// 데이터베이스 연결관련정보를 문자열로 선언String jdbc_driver = "oracle.jdbc.driver.OracleDriver";String jdbc_url = "jdbc:oracle:thin:@127.0.0.1:1521";

Page 47: 데이터베이스와  JDBC

4747

jdbctest.jsp (2)try{

// JDBC 드라이버 로드 Class.forName(jdbc_driver);

// 데이터베이스 연결정보를 이용해 Connection 인스턴스 확보 conn =

DriverManager.getConnection(jdbc_url,“jspdbuser",“jsppasswd");

// Connection 클래스의 인스턴스로 부터 SQL 문 작성을 위한 Statement 준비 stmt = conn.createStatement();

// username 값을 입력한 경우 sql 문장을 수행 . if(request.getParameter("username") != null) {

String sql = "insert into jdbc_test values('"+request.getParameter("username")+"','"+request.getParameter("email")+"')";

stmt.executeUpdate(sql); } }

catch(Exception e) { System.out.println(e);}

%>

Page 48: 데이터베이스와  JDBC

4848

jdbctest.jsp (3)

<HTML><HEAD><TITLE>JDBC 테스트 </TITLE></HEAD><BODY><center><H2> 이벤트 등록 </H2><HR>

<form name=form1 method=post action=jdbctest.jsp> 등록이름 : <input type=text name=username> email 주소 : <input type=text name=email size=20> <input type=submit value=" 등록 "> </form><HR></center># 등록 목록 <P>

Page 49: 데이터베이스와  JDBC

4949

jdbctest.jsp (4)<% try{ // select 문장을 문자열 형태로 구성한다 . String sql = "select username, email from jdbc_test";

// select 를 수행하면 데이터정보가 ResultSet 클래스의 인스턴스로 리턴됨 . ResultSet rs = stmt.executeQuery(sql); int i=1;

// 마지막 데이터까지 반복함 . while(rs.next()) { out.println(i+" : "+rs.getString(1)+" , "+rs.getString("email")+"<BR>"); i++; } // 사용한 자원의 반납 . rs.close(); stmt.close(); conn.close(); } catch(Exception e) { System.out.println(e); }%></BODY></HTML>

Page 50: 데이터베이스와  JDBC

5050

jdbctest.jsp 실행

Page 51: 데이터베이스와  JDBC

5151

생성된 데이터 조회 1

이클립스에서 확인 Database Explorer ->

JDBC_TEST 선택 -> 오른쪽 마우스 클릭 -> Data -> Sample Contents

Page 52: 데이터베이스와  JDBC

5252

생성된 데이터 조회 2

오라클 관리 도구에서 확인

웹브라우저 -> http://127.0.0.1:8087/apex -> jspdbuser/jsppasswd 로 로그인 -> 객체브라우저 -> 찾아보기 -> 테이블 -> 왼쪽 테이블 목록 -> JDBC_TEST 클릭 -> 오른쪽 메뉴 -> 데이터

Page 53: 데이터베이스와  JDBC

5353

jdbctest.jsp 결과확인

Page 54: 데이터베이스와  JDBC

5454

jdbctest_pstmt.jsp (1)

<%@ page contentType="text/html;charset=euc-kr" import="java.sql.*" %>

<% request.setCharacterEncoding("euc-kr"); %>

<%// 데이터베이스 연결관련 변수 선언Connection conn = null;PreparedStatement pstmt = null;

// 데이터베이스 연결관련정보를 문자열로 선언String jdbc_driver = "oracle.jdbc.driver.OracleDriver";String jdbc_url = "jdbc:oracle:thin:@127.0.0.1:1521";

Page 55: 데이터베이스와  JDBC

5555

jdbctest_pstmt.jsp (2) try{ // JDBC 드라이버 로드 Class.forName(jdbc_driver);

// 데이터베이스 연결정보를 이용해 Connection 인스턴스 확보 conn =

DriverManager.getConnection(jdbc_url,“jspdbuser",“jsppasswd");

// Connection 클래스의 인스턴스로 부터 SQL 문 작성을 위한 Statement 준비

String sql = "insert into jdbc_test values(?,?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1,request.getParameter("username")); pstmt.setString(2,request.getParameter("email"));

// username 값을 입력한 경우 sql 문장을 수행 . if(request.getParameter("username") != null) { pstmt.executeUpdate(sql); } } catch(Exception e) { System.out.println(e); }%>

Page 56: 데이터베이스와  JDBC

5656

jdbctest_pstmt.jsp (3)

<HTML><HEAD><TITLE>JDBC 테스트 </TITLE></HEAD><BODY><center><H2> 이벤트 등록 </H2><HR>

<form name=form1 method=post action=jdbctest_pstmt.jsp> 등록이름 : <input type=text name=username> email 주소 : <input type=text name=email size=20> <input type=submit value=" 등록 "> </form><HR></center># 등록 목록 <P>

Page 57: 데이터베이스와  JDBC

5757

jdbctest_pstmt.jsp (4)<% try{ // select 문장을 문자열 형태로 구성한다 . String sql = "select username, email from jdbc_test";

pstmt = conn.prepareStatement(sql);

// select 를 수행하면 데이터정보가 ResultSet 클래스의 인스턴스로 리턴됨 . ResultSet rs = pstmt.executeQuery(); int i=1;

// 마지막 데이터까지 반복함 . while(rs.next()) { out.println(i+" : "+rs.getString(1)+" , "+rs.getString("email")

+"<BR>"); i++; } // 사용한 자원의 반납 . rs.close(); pstmt.close(); conn.close(); } catch(Exception e) { System.out.println(e); }%></BODY></HTML>

Page 58: 데이터베이스와  JDBC

5858

jdbctest_pstmt.jsp 결과화면

Page 59: 데이터베이스와  JDBC

5959

요약 1

데이터베이스 (Database)란 데이터를 조직적으로 통합하여 구조화 시켜놓은 데이터의 집합체이다 .

데이터베이스를 생성하고 , 검색하며 , 추가 , 삭제를 원활히 하기 위한 프로그램의 집합을 데이터베이스 관리 시스템 (DBMS : Database Management System) 이라고 한다 .

DBMS 의 형태 중 가장 일반적인 오라클사의 Oracle 관계형 DBMS 를 설치할 수 있다 .

SQL(Structured Query Language) 은 데이터베이스를 정의하고 조작하기 위한 질의어 (Query Language) 이다 .

SELECT, INSERT, UPDATE, DELETE 등을 통해 데이터를 검색 , 추가 , 수정 , 삭제 등을 할 수 있다 .

Page 60: 데이터베이스와  JDBC

6060

요약 2 JDBC 프로그래밍은 6 단계로 진행된다 .

1. JDBC 드라이버 로드 :Class.forName(“oracle.jdbc.driver.OracleDriver”);

2. 데이터베이스 연결 : Connection conn = DriverManger.getConnection(JDBC_URL, ” 아이디” , ”

비밀번호” );

3. Statement 생성 : Statement stmt = conn.createStatement();

4. SQL 문 전송stmt.executeUpdate();

5. 처리 결과 리턴 : ResultSet rs=pstmt.executeQuery();

6. 연결 해제 :rs.close(); // ResultSet closeconn.close(); // connect close