목원대학교 융합컴퓨터미디어학부 교수
박 기 홍
학습 목표
2
2020-1학기
• JDBC의 개념을 이해합니다.
JDBC 드라이버 로딩 및 DBMS 접속 방법을 익힙니다.
데이터베이스 쿼리 실행 방법을 익힙니다.
쿼리문 실행 결과 값을 가져오는 방법을 익힙니다.
• 웹 쇼핑몰의 상품 조회, 등록, 수정, 및
삭제 페이지를 만듭니다.
본 온라인 강의 교안 작성 시
한빛아카데미에서 제공하는 강의 교안을 참고 하였습니다.
인터넷프로그래밍
JDBC의 개요 (1/2)
3
2020-1학기
인터넷프로그래밍
JDBC
• 자바/JSP 프로그램 내에서 데이터베이스와 관련된 작업을 처리할 수 있도록
도와주는 자바 표준 인터페이스
• 관계형 데이터베이스 시스템에 접근하여 SQL 문을 실행하기 위한 자바 API (Lib.)
• JDBC API를 사용하면 DBMS의 종류에 상관없이 데이터베이스 작업을 처리할 수 있음
JDBC(Java DataBase Connectivity)
JDBC의 개요 (2/2)
4
2020-1학기
인터넷프로그래밍
JSP + DB with JDBC
❶
java.sql.* 패키지 임포트,
❷
JDBC 드라이버 로딩,
❸
데이터베이스 접속을 위한 Connection 객체 생성,
❹
쿼리문을 실행하기 위한 Statement/PreparedStatement/CallableStatement객체 생성,
❺
쿼리 실행,
❻
쿼리 실행의 결과 값(int, ResultSet) 사용,
❼
사용된 객체(ResultSet, Statement/PreparedStatement/CallableStatement, Connection) 종료
JDBC를 사용한 JSP와 데이터베이스의 연동
JDBC 드라이버 로딩 및 DBMS 접속 (1/6)
5
2020-1학기
인터넷프로그래밍
JDBC 드라이버 로딩
• JDBC 드라이버 로딩 단계에서는 드라이버 인터페이스를 구현하는 작업
• Class.forName( ) 메소드를 이용하여 JDBC 드라이버를 로딩
• JDBC 드라이버가 로딩되면 자동으로 객체가 생성되고, DriverManager 클래스에 등록
•
JDBC 드라이버 로딩은 프로그램 수행 시 한 번만 필요
JDBC 드라이버 로딩 및 DBMS 접속 (2/6)
6
2020-1학기
인터넷프로그래밍
Connection 객체 생성
• JDBC 드라이버에서 데이터베이스와 연결된 커넥션을 가져오기 위해 DriverManager
클래스의 getConnection( ) 메소드를 사용
• DriverManager 클래스로 Connection 객체를 생성할 때 JDBC 드라이버를 검색하고,
검색된 드라이버를 이용하여 Connection 객체를 생성한 후 이를 반환
JDBC 드라이버 로딩 및 DBMS 접속 (3/6)
7
2020-1학기
인터넷프로그래밍
JDBC 드라이버 로딩 및 DBMS 접속 (4/6)
8
2020-1학기
인터넷프로그래밍
DB 연결 닫기
• 데이터베이스 연결이 더 이상 필요하지 않으면 데이터베이스와 JDBC 리소스가 자동으로
닫힐 때까지 대기하는 것이 아니라 close( ) 메소드로 생성한 Connection 객체를 해제
• 일반적으로 데이터베이스 리소스를 사용하지 않기 위해 사용을 끝내자마자
리소스를 해제하는 것이 좋음
JDBC 드라이버 로딩 및 DBMS 접속 (5/6)
9
2020-1학기
인터넷프로그래밍
DB 제어 확인
1
2
3
showDB.sql
이름으로 저장
4
5
결과 확인
JDBC 드라이버 로딩 및 DBMS 접속 (6/6)
10
2020-1학기
인터넷프로그래밍
JDBC API로 DB 접속
데이터베이스 쿼리 실행 (1/17)
11
2020-1학기
인터넷프로그래밍
Statement 객체로
데이터 접근
• Statement 객체
정적인 쿼리에 사용하며, 하나의 쿼리를 사용하고 나면 더는 사용할 수 없음
하나의 쿼리를 끝내면 close( )를 사용하여 객체를 즉시 해제해야 함
close( )를 사용하여 객체를 즉시 해제하지 않으면 무시할 수 없는 공간이 필요하며
페이지가 다른 작업을 수행하는 동안 멈추지 않기 때문
복잡하지 않은 간단한 쿼리문을 사용하는 경우에 좋음
데이터베이스 쿼리 실행 (10/17)
12
2020-1학기
인터넷프로그래밍
PreparedStatement
객체로 데이터 접근
• PreparedStatement 객체
동적인 쿼리에 사용
Prepared Statement 객체는 하나의 객체로 여러 번의 쿼리를 실행할 수 있으며,
동일한 쿼리문을 특정 값만 바꾸어서 여러 번 실행해야 할 때,
매개변수가 많아서 쿼리문을 정리해야 할 때 유용
데이터베이스 쿼리 실행 (2/17)
13
2020-1학기
인터넷프로그래밍
Statement 객체로
데이터 접근
• executeQuery( ) 메소드로 데이터 조회하기
데이터베이스 쿼리 실행 (3/17)
14
2020-1학기
인터넷프로그래밍
Statement 객체로
데이터 접근
• executeUpdate( ) 메소드로 데이터 삽입, 수정, 삭제하기
데이터베이스 쿼리 실행 (4/17)
15
2020-1학기
인터넷프로그래밍
Statement 객체로
데이터 접근
• executeUpdate( ) 메소드로 데이터 삽입, 수정, 삭제하기
데이터베이스 쿼리 실행 (5/17)
16
2020-1학기
인터넷프로그래밍
Statement 객체로
Select 쿼리문 실행하기
member.sql
이름으로 저장
1
2
3
결과 확인
4
5
mysql 접속 후
결과 확인
데이터베이스 쿼리 실행 (6/17)
17
2020-1학기
인터넷프로그래밍
DB 접속을 위한
dbconn.jsp 파일 만들기
데이터베이스 쿼리 실행 (7/17)
18
2020-1학기
인터넷프로그래밍
insert01.jsp
데이터베이스 쿼리 실행 (8/17)
19
2020-1학기
인터넷프로그래밍
Insert01_process.jsp
데이터베이스 쿼리 실행 (9/17)
20
2020-1학기
인터넷프로그래밍
데이터베이스 쿼리 실행 (10/17)
21
2020-1학기
인터넷프로그래밍
PreparedStatement
객체로 데이터 접근
• PreparedStatement 객체
동적인 쿼리에 사용
Prepared Statement 객체는 하나의 객체로 여러 번의 쿼리를 실행할 수 있으며,
동일한 쿼리문을 특정 값만 바꾸어서 여러 번 실행해야 할 때,
매개변수가 많아서 쿼리문을 정리해야 할 때 유용
데이터베이스 쿼리 실행 (11/17)
22
2020-1학기
인터넷프로그래밍
PreparedStatement
객체로 데이터 접근
데이터베이스 쿼리 실행 (12/17)
23
2020-1학기
인터넷프로그래밍
PreparedStatement
객체로 데이터 접근
• executeQuery( ) 메소드로 데이터 조회하기
executeQuery( ) 메소드는 동적인 SELECT 쿼리문을 통해 데이터를 검색하는 데 사용
데이터베이스 쿼리 실행 (13/17)
24
2020-1학기
인터넷프로그래밍
• executeUpdate( ) 메소드로 데이터 삽입, 수정, 삭제하기
PreparedStatement
객체로 데이터 접근
데이터베이스 쿼리 실행 (14/17)
25
2020-1학기
인터넷프로그래밍
• executeUpdate( ) 메소드로 데이터 삽입, 수정, 삭제하기
PreparedStatement
객체로 데이터 접근
데이터베이스 쿼리 실행 (15/17)
26
2020-1학기
인터넷프로그래밍
insert02.jsp
데이터베이스 쿼리 실행 (16/17)
27
2020-1학기
인터넷프로그래밍
Insert02_process.jsp
데이터베이스 쿼리 실행 (17/17)
28
2020-1학기
인터넷프로그래밍