Statement, PreparedStatement
: 오라클 DB에 쿼리를 날리는 방식
- Statement : SQL Injection이라는 취약점을 가지고있어 사용하길 권장하지 않는다.
-> PreparedStatement 사용해라.- 둘의 차이점 ? 캐시 사용 유무.
- PreparedStatement는 객체를 캐시에 담아 재사용합니다.
-> 반복적으로 쿼리를 수행할 경우 성능이 더 좋다.- 변수를 넣는 VALUES의 값에 물음표 (?) 를 사용하고, 물음표 자리에
set[자료형](?의 순서, 들어갈 값)
을 이용하여 값을 대입할 수 있다.
ex) pstmt.setString(1, "ABC") / pstmt.setInt(2,3);
sysdate
를 사용할 경우, sql문을 생성할 때 sysdate 라고 넣어주면 된다.String sql = "insert customer(name,age,addr,enrollDate) values (?,?,?,sysdate)
pstmt.executeUpdate(sql);
executeQuery와 executeUpdate의 차이점?
- executeQuery는 ResultSet을 만드는 sql문에서 사용하며, 주로 select문을 수행할 때 사용한다.
- executeUpdate는 insert나 update와 같은 ddl, dml을 실행할 때 사용함.
ResultSet?
- SQL문 중에서 select문을 사용하는 경우 ResultSet을 반환한다.
statement의 executeQuery() 메서드는 select 쿼리를 실행할 때 사용되며, select 쿼리의 실행결과를java.sql.ResultSet
객체에 담아서 리턴(SQL 쿼리에 의해 생성된 테이블의 값을 가지게 됨)한다.
따라서 ResultSet 클래스가 제공하는 메서드를 사용해서 읽어올 수 있다.
get[타입명]()
메서드를 이용하면 된다.ResultSet rs = pstmt.executeQuery();
출처