Today I Learned - 34
JSP - 8 (중요!!!)
- 통합 개발 환경(이클립스)과 데이터베이스(MySQL) 연동
- JDBC로 데이터베이스와 JSP 연동
이클립스<->DB 연동
- 이클립스에서 DB 직접 제어
- 이클립스에서 제공하는 Data Source Explorer 뷰 사용
- 쿼리문 작성 및 수행 자유롭게
-
- 데이터베이스 추가
- (1) MySQL root 계정 접속
- (2) 데이터베이스 생성
create database JSPBookDB;
- 데이터베이스 추가
-
- 데이터베이스 커넥션 설정
- (1) 이클립스 - Data Source Explorer 뷰
- (2) 뷰에서 Database Connection - New 선택
- (3) Connection Profile Types - MySQL
- (4) Specity a Driver… - New Driver Definition
- (5) New Driver Definition, 각 탭마다 설정
- Name/Type 탭 - MySQL JDBC Driver 5.1
- JAR List 탭 - 기존 드라이버 Remove/Add - ‘mysql-connector-java-8.0.29.jar’
- Properties 탭 - MySQL에서 생성한 DB 이름, 설정한 포트, 계정 등 입력 후 OK
- (6) Test Connection 확인 후 Finish
- 데이터베이스 커넥션 설정
-
- 데이터베이스 제어
- 만들어진 DB에서 ‘Open SQL Scrapbook’
- 스크랩북 이용해서 쿼리문 작성 및 저장
이클립스에서 쿼리문 실행 = 내용 드래그 후 ‘Alt + x’
- 데이터베이스 제어
JDBC로 DB<->JSP 연동 - 1. JDBC 개요
- JDBC(Java DataBase Connectivity)
- 자바/JSP 프로그램 내에서 DB와 관련된 작업을 할 수 있는 자바 표준 인터페이스
- 관계형 DB 시스템에 접근, SQL문 실행하기 위한 자바 API or 라이브러리
- JDBC 사용한 JSP<->DB 연동 단계
- (1) java.sql.* 패키지 임포트
- (2) JDBC 드라이버 로딩
- (3) DB 접속을 위한 Connection 객체 생성
- (4) Statement / PreparedStatement / CallableStatement 객체 생성
- (5) 쿼리 실행
- (6) 실행의 결과 값 사용
- (7) 사용된 객체 (Statement / PreparedStatement …) 종료
JDBC로 DB<->JSP 연동 - 2. JDBC 드라이버 로딩 및 DBMS 접속
- JDBC 드라이버 로딩 (드라이버 인터페이스 구현)
- Class.forName() 메서드 사용
- 자동으로 객체 생성
- DriverManager 클래스에 등록
- Connection 객체 생성
- DriverManager 클래스의 getConnection() 메서드 사용
- ex.1
static Connection getConnection(String url)
- ex.2
static Connection getConnection(String url, String user, String password)
- ex.3
static Connection getConnection(String url, Properties info)
- 데이터베이스 연결 닫기
- 생성한 Connection 객체, close() 메서드로 해제
- 드라이버 로딩 및 DBMS 접속 예(ex.)
JDBC로 DB<->JSP 연동 - 3. 데이터베이스 쿼리 실행
- 알아두기!
- 쿼리 실행 객체는 Statement, PreparedStatement, CallableStatement
- 쿼리 실행 성공/실패 여부와 상관없이, 실행객체와 Connection 객체의 리소스는 해제해야 함!
- Statement 객체로 데이터 접근
- 정적인 쿼리에 사용
- 한 객체당 하나의 쿼리만 사용 후 해제!
- 간단한 쿼리문에 사용
stmt 메서드 | 반환형 | 설명 |
---|---|---|
executeQuery(String sql) | ResultSet 객체 | SELECT문 실행 |
executeUpdate(String sql) | int | 삽입, 수정, 삭제 관련 SQL문 실행 |
close() | void | Statement 객체 반환 |
- stmt ex 1-1. 데이터베이스 커넥션 설정
- stmt ex 1-2. 테이블 생성
- stmt ex 1-3. 프로젝트 실행 코드
- stmt ex 1-4. insert 결과
- PreparedStatement 객체로 데이터 접근
- 동적 쿼리에 사용
- 하나의 객체로 여러 번의 쿼리 실행 가능
- 쿼리문에, 정해지지 않은 값은 물음표(?)로 표시하여 사용
- 매개변수가 많아 쿼리문을 정리해야 할 때 유용
- setXxx() 메서드
- 물음표(?)에 값을 할당!
- setString/setInt/setLong/setObject…(int 위치값, 각 데이터형 변수X)
pstmt 메서드 | 반환형 | 설명 |
---|---|---|
executeQuery() | ResultSet 객체 | SELECT문 실행 |
executeUpdate() | int | 삽입, 수정, 삭제 관련 SQL문 실행 |
close() | void | PreparedStatement 객체 반환 |
JDBC로 DB<->JSP 연동 - 4. 쿼리문 실행 결과 값 가져오기
- ResultSet 객체
- SELECT 쿼리문의 실행 결과 값 가져옴
과제
-
15, 16단원 연습문제 / ~7/22(금)까지
-
이형록_220526_JSP과제
-
내용
- 1~3번
- 교재 읽고 답 찾기
- 메모장에 타이핑
- 4~6번
- 교재 읽고 실습
- 기본 소스 임포트 해서 확인
- 7번
- Book Market Mall 만들기 - 정답 소스 없음 (구글에 검색!!)
- 수업용 예제, ‘Web Market Mall’ 참고!
- 1~3번
점점 어렵다.. 잘 이해가 안된다..
번외 과제 있음 => ‘상품 상세 정보’ 화면에서 이상한 점 확인 및 수정 (힌트: DB)