본문 바로가기
Java

[Java] Statement와 PreparedStatemet

by 스응 2023. 3. 12.
728x90
728x90

  - 문자열들을 SQL로 변경하거나, SQL 문을 실행시켜주는 인터페이스

  - SQL 문 실행 시

      · SELECT 문은 executeQuery 메서드 사용  → ResultSet(결과 집합) 반환
      · DML 문은 executeUpdate 메서드 사용  → int(변경이 적용된 레코드 수) 반환

  - DB와 Java 연동 코드 : https://young0105.tistory.com/126

 

Statement

// 쿼리문 작성 (마지막에 공백을 하나 입력해야 오류 위험 감소)
String sqlFormat = "SELECT * FROM 테이블명 WHERE 컬럼명1 = '%S' ";
String sql = String.format(sqlFormat, targetValue));

// conn : Connection 객체
Statment stmt = conn.createStatement();

ResultSet rs = stmt.executeUpdate(sql); // String SQL문을 매개변수로 받음
// executeQuery는 ResultSet(결과 집합)을 반환함
// 결과 집합의 각 레코드를 DTO 객체에 하나씩 할당할 수 있음

 

PreparedStatement

// 쿼리문 작성 (마지막에 공백을 하나 입력해야 오류 위험 감소)
String sql = "SELECT * FROM 테이블명 WHERE 컬럼명1 = ? "; // 작은따옴표 생략 가능

// conn : Connection 객체
PreparedStatement pstmt = conn.prepareStatement(sql);

// pstmt.setString(순서, 넣을_값); :: 인덱스 X, 1부터 시작
pstmt.setString(1, targetValue); // 첫 번째 ? 자리에 넣음

ResultSet rs = pstmt.executeQuery(); // 매개변수 없이 실행
// executeQuery는 ResultSet(결과 집합)을 반환함
// 결과 집합의 각 레코드를 DTO 객체에 하나씩 할당할 수 있음

 

  - PreparedStatement는 객체를 캐시에 담아 재사용함

      → 반복적으로 쿼리를 수행할 경우, Statement보다 성능이 좋음

 

320x100
반응형

'Java' 카테고리의 다른 글

[Java] 래퍼 클래스 (Wrapper class)  (0) 2023.03.22
[Java] JSON  (0) 2023.03.15
[Java] 소켓 통신  (0) 2023.03.03
[Java] 입출력 스트림 (I/O Stream)  (1) 2023.03.03
[Java] 컬렉션 프레임워크 (List, Set, Map)  (0) 2023.02.22

댓글