접속된 DBMS 서버에 SQL 명령을 전달하여 실행된 결과를 반환하는 기능을 제공하는 객체들이다.
Statement 객체는 SQL문을 DB로 전송하는데 사용한다.
접속된 DBMS 서버에 SQL 명령을 전달하여 실행된 결과를 반환하는 기능을 제공하는 인스턴스다.
Statement 인터페이스는 SQL문들을 실행하고 결과들을 검색하기 위한 기본적인 메소드들이 있다.
Statement stmt=con.createStatement();
//+연산자를 통해 결합
String sql1="insert into student values("+no+",'"+name+"','"+phone+"','"+address+"','"+birthday+"')";
int rows=stmt.executeUpdate(sql1);
IN 매개변수를 가지거나 가지지 않는 프리 컴파일된 SQL문을 실행하는데 사용한다.
PreparedStatement 인터페이스는 IN 매개변수들을 다루기 위한 메소드들이 있다.
PreparedStatement 인스턴스에 저장된 SQL 명령에서는 ?(InParameter) 기호를 사용한다.
//InParameter는 Java 변수값을 무조건 SQL 명령의 값으로만 인식되어 처리
//?는 InParameter
String sql="select * from student where name=? order by no";
//sql 명령을 pstmt에 저장
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, name);
DB 저장 프로시저(Stored Procedure)의 호출을 실행하는데 사용한다.
CallableStatement 인터페이스에는 OUT 매개변수들을 다루기 위한 메소드들이 있다.
데이터베이스 쪽에서 프로시저로 존재하는 것이기 때문에 클라이언트에서 저장된 프로시저를 실행만 해주면 그 프로시저 내용이 오라클 내부에서 바로 처리되므로 실행속도가 더 빠르다. 또 네트워크에서 사용하는 쿼리의 양도 줄어드므로 부하가 적다.
{call 프로시저명({값|변수},{값|변수},...)}
//? 기호(InParameter) 사용 가능
String sql="{call delete_student(?)}";
//객체 생성할 때 prepareCall 메서드를 사용함
CallableStatement cstmt=con.prepareCall(sql);
cstmt.setInt(1, no);
//인스턴스에 저장된 SQL 명령을 전달하여 실행
cstmt.execute();