데이터베이스와 JDBC
-
Upload
howard-stanley -
Category
Documents
-
view
172 -
download
0
description
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
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 [email protected]
200702 아무개 정보기술 85.10.02 [email protected]
…
id username dept birth email
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]
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 이쁜이
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
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