데이터베이스와 JDBC

Post on 03-Jan-2016

172 views 0 download

description

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

Transcript of 데이터베이스와 JDBC

11

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

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

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

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

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

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

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

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

데이터베이스와 JDBC

22

데이터베이스 개요

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

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

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

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

33

파일시스템

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

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

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

등록금고지서파일

학생DM파일

학생주소록파일

성적처리파일

친구주소록

44

데이터베이스 도입 장점

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

데이터 공유 편이성

정보 표준화 유리

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

대량 데이터의 빠른 검색

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

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

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

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

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

55

데이터베이스 구분

파일 ( 파일시스템 )

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

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

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

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

66

테이블 구성요소

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

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

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

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

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

88

데이터베이스 키

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

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

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

99

데이터베이스 키

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

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

테이블 생성

테이블 구조 변경

테이블 삭제

데이터 조회

데이터 삽입

데이터 삭제

데이터 수정

1111

데이터베이스 자료형

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

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

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

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

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

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

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)

크기설명자료형

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

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

1515

SQL 기본 문법

delete table : 테이블 삭제 형식

DROP TABLE 테이블명

사용 예DROP TABLE member

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 test@test.net

200702 아무개 정보기술 85.10.02 tt@tt.net

id username dept birth email

1717

SQL 기본 문법

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

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

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

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

200701 홍길동 정보기술 85.08.10 test@test.net

200702 아무개 정보기술 85.10.02 tt@tt.net

id username dept birth email

200703 강기동 정보기술 85.04.12 my@my.net

1818

SQL 기본 문법

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

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

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

200702

200701 홍길동 정보기술 85.08.10 test@test.net

200702 아무개 정보기술 85.10.02 tt@tt.net

id username dept birth email

200705 이쁜이

1919

SQL 기본 문법

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

DELETE FROM 테이블명 WHERE 조건

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

200701 홍길동 뉴미디어 85.08.10 test@test.net

200702 아무개 뉴미디어 85.10.02 tt@tt.net

id username dept birth email

2020

JDBC 개념과 역할

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

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

애플리케이션

애플리케이션

오라클 DBMS

MySql DBMS

인포믹스 DBMS

JDBC드라이버관리자

구현사용

오라클 JDBC 드라이버

MySql JDBC 드라이버

인포믹스 JDBC 드라이버

2121

JDBC 드라이버 유형

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

JDBC 드라이버 관리자

DBMS DBMS DBMSDBMS DBMS

Native-Protocol 드라이버

ODBC 드라이버 JDBC 미들웨어

JDBC-ODBC 드라이버

JDBC API

JDBC 드라이버 API

Net-Protocol 드라이버

Native-API 드라이버

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 폴더에 복사하는

방법

2323

JDBC 프로그래밍 단계

2424

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

jdbc.drivers 환경변수 이용

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

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

Class.forName() 이용

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

프로그램 코드에서 로드

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

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 이름으로도 불림 , 생략가능

2626

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

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

createStatement()

Statement stmt = conn.createStatement();

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

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();

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();

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();

3030

5-2. 결과 받기

3131

6. 연결해제

conn.close();

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

주의 : 순차적으로 close()

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

3232

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

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

②쿼리 전달

④결과 전달

웹 서버 (톰캣 )

클라이언트

DB 서버

③ 리스너

DB 1 DB 2 DB 3

3333

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

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

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

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

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

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 에

복사

3636

이클립스 개발환경 구성 1

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

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

3838

이클립스 개발환경 구성 3

3939

이클립스 개발환경 구성 4

필터 설정 Database Explorer 에서

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

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

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

4040

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

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

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

4141

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

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

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

)

4242

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

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

4343

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

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

4444

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

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

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

4545

JDBC 프로그래밍

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

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";

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);}

%>

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>

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>

5050

jdbctest.jsp 실행

5151

생성된 데이터 조회 1

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

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

5252

생성된 데이터 조회 2

오라클 관리 도구에서 확인

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

5353

jdbctest.jsp 결과확인

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";

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); }%>

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>

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>

5858

jdbctest_pstmt.jsp 결과화면

5959

요약 1

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

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

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

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

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

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