[JAVA] 자바 - JDBC PreparedStatement 인터페이스
by mini_min[JAVA]
자바 - JDBC PreparedStatement 인터페이스
✔️ PreparedStatement 란?
: Statement 하위 인터페이스로 프리 컴파일된 SQL 문을 나타내는 객체다.
: 프리 컴파일 (전처리) 한 SQL 문을 PreparedStatement 객체에 저장함
: "?" : IN 매개 변수를 하나 이상 가진다!
: "?" 매개 변수 값을 설정하는 setter 메소드가 필요하다.
⭐ 반복되는 SQL 문을 실행할 때 속도가 빨라서 효율적이다.
📓 실행방법
1) 실행할 sql 쿼리문 작성
2) PreparedStatement 메소드 호출하여 객체 생성, IN 파라미터를 setter 이용해 설정
3) 쿼리를 실행한다.
❌ executeUpdate() 메소드 실행하며 메소드에 쿼리 추가 안함!
try { sql = "INSERT INTO score(hak, name, birth, kor, eng, mat) VALUES (?, ?, ?, ?, ?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, dto.getHak()); pstmt.setString(2, dto.getName()); pstmt.setString(3, dto.getBirth()); pstmt.setInt(4, dto.getKor()); pstmt.setInt(5, dto.getEng()); pstmt.setInt(6, dto.getMat()); result = pstmt.executeUpdate();

try { sql = "DELETE FROM score WHERE hak = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, hak); result = pstmt.executeUpdate();
🔒 문제
-- 두 테이블에 동시에 데이터 넣기
(다중 테이블 insert)
sql = "INSERT ALL INTO member1(id, pwd, name) VALUES(?, ?, ?)" + " INTO member2(id, birth, email, tel) VALUES(?, ?, ?, ?)" + " SELECT * FROM dual"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, dto.getId()); pstmt.setString(2, dto.getPwd()); pstmt.setString(3, dto.getName()); pstmt.setString(4, dto.getId()); pstmt.setString(5, dto.getBirth()); pstmt.setString(6, dto.getEmail()); pstmt.setString(7, dto.getTel()); result = pstmt.executeUpdate();
-- 다중 테이블 SELECT (조회하기)
조인 조건을 줘야 필요한 데이터만 쏙쏙 골라서 조회할 수 있다.
sql = "SELECT member1.id, pwd, name, birth, email, tel " + " FROM member1 " + " JOIN member2 ON member1.id = member2.id " + " WHERE member1.id = ? "; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); rs = pstmt.executeQuery();
블로그의 정보
개발자 미니민의 개발로그
mini_min