Statement interface를 상속받고 있기 때문에 Statement의 모든 메소드를 가지고 있다.
parameterized query를 사용할 때 쓴다. (쿼리의 내용은 같으나 변수를 바꿔가며 사용하고 싶을 때)
컴파일 한번으로 여러 종류의 쿼리를 사용할 수 있다.
ex) "insert into table value(?, ?)" 와 같이 쿼리를 작성하고 ?표 부분에 들어갈 파라미터를 PreparedStatement의 함수를 이용해 세팅할 수 있다.
ResultSet executeQuery (String sql)
int executeUpdate (String sql)
boolean execute (String sql)
true를 return한다.true일 경우 getResult ()를 사용해서 결과를 얻는다.false를 return한다.false일 경우 getUpdateCount ()를 사용해서 결과를 얻는다.void addBatch (String sql)
int[] executeBatch ()
addBatch (String sql) 로 쌓인 SQL을 배치로 수행한다. 모든 커맨드가 성공하면 update된 count를 배열로 return한다.public void setInt(int paramIndex, int value)
paramIndex 자리에 있는 파라미터를 value (int)값으로 세팅한다.public void setString(int paramIndex, String value)
paramIndex 자리에 있는 파라미터를 value (String)값으로 세팅한다.public void setFloat(int paramIndex, float value)
paramIndex 자리에 있는 파라미터를 value (float)값으로 세팅한다.public void setDouble(int paramIndex, double value)
paramIndex 자리에 있는 파라미터를 value (double)값으로 세팅한다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws SQLException {
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jdbc", "root", "1234");
PreparedStatement psUpdate = con.prepareStatement("update product set `price` = `price` + ? where id = ?;");
// price에다가 ?를 더해줄 것 , id가 ? 인 레코드를 변경할 것
psUpdate.setInt(1, 10000);
// 첫번째 ?의 값을 10000으로 set
psUpdate.setInt(2, 1);
// 두번째 ?의 값을 1로 set
int updateResult = psUpdate.executeUpdate();
// 쿼리를 사용
System.out.println("result of update: " + updateResult);
}
}
id = 1 인 레코드의 price에 10000이 더해진 것을 확인할 수 있다.
