개발자 미니민의 개발스터디

[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

활동하기