Java/study

PrepareStatement 이용하기

Clearing 2022. 7. 5. 17:51
728x90

기존에 쿼리문(SQL문)을 사용하기 위해서는 Connection 객체를 생성한 후 createStatement() 메서드를 사용해서

Statement 객체를 만들어준 후 생성된 Statement 객체로 executeQuery() 메서드를 실행하여

메서드의 인자로 쿼리문(SQL문)을 작성해주었다.

 

PreparedStatement와 Statement의 차이로는 전자는 미리 쿼리문(SQL문)을 작성해놓고 나중에 값을 지정해줄 수 있다.

그 역할을 ? 가 진행해주며 값이 들어가는 부분에 ?로 대치하여 쿼리문(SQL문)을 작성한다.

이후 setString, setInt, ... 등을 통하여 첫번째 인자에 물음표의 위치가 들어가고 두번째 인자로는 값이 들어가게 된다.

 

Statement를 상속받은 PrepareStatement를 사용하게 되면 객체생성시에 쿼리문(SQL문)을 전달하고

이후에 생성된 객체로 메서드를 실행하여 값을 전달한다.

그에 따라 executeQuery() 메서드는 반환값으로 ResultSet이 나와 SELECT(Read)로서 사용될 수 있고

executeUpdate()는 반환값으로 int(실행결과 변경된 레코드의 개수)가 나오기 때문에 INSERT(Create), UPDATE(Update), DELETE(Delete)로 사용될 수 있다.

 

ex) 학생 테이블의 학생이 컬럼으로 이름과 점수를 받는경우
final String sql_insert="INSERT INTO STUDENT VALUES((SELECT NVL(MAX(SID),0)+1 FROM STUDENT),?,?)";

pstmt=conn.prepareStatement(sql_insert);
pstmt.setString(1, name);
pstmt.setInt(2, score);
pstmt.executeUpdate();

 

728x90

'Java > study' 카테고리의 다른 글

SQL을 활용하여 MVC 응용  (0) 2022.07.14
MVC 모델을 이용한 자판기 프로그램  (0) 2022.07.13
JAVA에 DB연동하기  (0) 2022.07.04
DDL / DML / DCL  (0) 2022.07.03
DBMS 활용을 위해 Eclips에 Oracle 연동하기  (0) 2022.07.01