DB/MySQL

[JDBC 프로그래밍 흐름] Statement / PreparedStatement

ucong 2020. 11. 20. 01:15

Statement - Statement / PreparedStatement

- SQL 구문을 실행하는 역할

- 스스로는 SQL 구문해석 하지 못하고 전달역할

Statement  PreparedStatement
sql문이 달라지더라도 한개만 생성해서 재사용 가능

매번 컴파일 수행

단일로 사용될 때 빠른 속도를 가짐
ㆍ statement의 기능 향상

ㆍ 코드 안정성과 가독성이 statement보다 높음

ㆍ sql문마다 객체 각각 생성해야되기 때문에 재사용 불가능

ㆍ 처음 프리컴파일 된 후, 이후에는 컴파일 수행안해도 됨

반복실행시 성능면에서 statement보다 빠름

preparedStatement

- Connection 객체의 PreparedStatement()  메서드 이용해 생성가능

- SQL문에 변수가 들어갈 자리는 '?' 로 표시

ex ) String sql = "INSERT INTO 테이블명(속성1,속성2,속성3) values(?,?,?)";

- 실행시 ? 에 대응되는 값 지정

ex) setXXX(int parameterIndex,xxx a); XXX는 변수형

       - > setInt(int parameterIndex, int a);

 

Statement/PreparedStatement 생성코드

//private Statement st;
private PreparedStatement ps;

//String sql = "INSERT INTO 테이블명(속성1,속성2,속성3) values("속성1","속성2","속성3")"
String sql = "INSERT INTO 테이블명(속성1,속성2,속성3) values(?,?,?)";

//st=con.createStatement();
ps = con.prepareStatement(sql);
ps.setInt(1, 속성1);
ps.setString(1, 속성2);
ps.setDouble(1, 속성3);

//st.close();
ps.close();