본문 바로가기

웹개발 풀스택 과정/Database(Oracle)

21일차(2022.01.20) _ JDBC 정리

1. DBConnector 클래스 getConnector 메서드 만들기

1) DB 연결 정보
 String username = "" : DB의 ID
 String password = "" : DB의 PW
 String url = "" : DB의 IP:PORT:SID
 String driver = "" : 사용하려는 DB의 Library (생략가능)

2) driver를 메모리에 로딩
 - 1번에서 driver를 생략 했으면 생략 가능
 Class.forName(driver);

3) DB 연결 및 Connection 객체 리턴
 Connection con = DriverManger.getConnection(url, username, password)
 return con;

 

2. DAO 클래스 정리

1) DB 연결
 Connection con = dbConnector.getConnector

2) SQL Query문 작성
 - 한개의 문자열이 나오도록 작성
 - 끝에 ; 는 작성하지 않음
 - 변수값은 ? 처리
 - 컬럼명이나 테이블명은 ? 로 처리 할 수 없음
 - 문자열 이나 날짜 Data 는 '' 생략
 예시) String sql = "SELECT * FROM DEPARTMENTS WHERE DEPARTMENT_ID = ?"

3) 작성한 Query문을 DB로 미리 전송
 - 미완성된 Query문을 DB로 보내서 실행 준비 시키기
 예시) PreparedStatement st = con.prepareStatement(sql);

4) ? 값 적용
 - DB에게 ? 값 전송 준비
 - set데이터타입(인덱스번호, 값)
 - 인덱스 번호는 ? 의 순서대로 자동 지정, SQL문을 읽는 순서와 상관 없음
 - 인덱스 번호는 1번 부터 시작
 예시) st.setInt(1, 10);

5) 최종 전송 후 결과처리
 - executeXXX(SQL문을 넣으면 에러)
 a. SELECT
 ResultSet rs = st.executeQuery();
 - Java에서 DB의 ResultSet을 처리하기 위한 ResultSet 제공

 - 주요메서드
  1) next()
   - 결과물에서 한줄의 ROW를 읽고 데이터가 있으면 true, 없으면 false를 리턴
   - 결과물에서 Data를 꺼내 오려면 무조건 실행
  2) getXXX()
   - next() 메서드가 호출된 후 사용 가능
   - get데이터타입("조회결과의 컬럼명");
   - get데이터타입(컬럼의 인덱스 번호) - SELECT 결과의 왼쪽부터 1이 자동 지정

 b. INSERT, UPDATE, DELETE
 int result = st.executeUpdate();


6) 연결 해제
 - 연결된 역순으로 해제
 rs.close(); //SELECT 만, INSERT UPDATE DELETE는 ResultSet이 없음
 st.close();
 con.close();