logo

ReadyStatement 인터페이스

ReadyStatement 인터페이스는 State의 하위 인터페이스입니다. 매개변수화된 쿼리를 실행하는 데 사용됩니다.

매개변수화된 쿼리의 예를 살펴보겠습니다.

 String sql='insert into emp values(?,?,?)'; 

보시다시피 값에 대한 매개변수(?)를 전달하고 있습니다. 해당 값은 ReadyStatement의 setter 메서드를 호출하여 설정됩니다.

왜 ReadyStatement를 사용하나요?

성능 향상 : 쿼리는 한 번만 컴파일되기 때문에 preparedStatement 인터페이스를 사용하면 애플리케이션의 성능이 더 빨라집니다.


ReadyStatement의 인스턴스를 얻는 방법은 무엇입니까?

Connection 인터페이스의 prepareStatement() 메소드는 ReadyStatement의 객체를 반환하는데 사용됩니다. 통사론:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

ReadyStatement 인터페이스의 메소드

ReadyStatement 인터페이스의 중요한 메소드는 다음과 같습니다.

방법설명
공개 무효 setInt(int paramIndex, int 값)주어진 매개변수 인덱스에 정수 값을 설정합니다.
공개 무효 setString(int paramIndex, 문자열 값)문자열 값을 주어진 매개변수 인덱스로 설정합니다.
공개 무효 setFloat(int paramIndex, float 값)float 값을 주어진 매개변수 인덱스로 설정합니다.
공개 무효 setDouble(int paramIndex, double 값)주어진 매개변수 인덱스에 double 값을 설정합니다.
공개 int 실행업데이트()쿼리를 실행합니다. 생성, 삭제, 삽입, 업데이트, 삭제 등에 사용됩니다.
공개 결과 집합 실행 쿼리()선택 쿼리를 실행합니다. ResultSet의 인스턴스를 반환합니다.

레코드를 삽입하는 ReadyStatement 인터페이스의 예

우선 아래와 같이 테이블을 생성합니다.

 create table emp(id number(10),name varchar2(50)); 

이제 아래 제공된 코드를 사용하여 이 테이블에 레코드를 삽입하십시오.

 import java.sql.*; class InsertPrepared{ public static void main(String args[]){ try{ Class.forName('oracle.jdbc.driver.OracleDriver'); Connection con=DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:xe','system','oracle'); PreparedStatement stmt=con.prepareStatement('insert into Emp values(?,?)'); stmt.setInt(1,101);//1 specifies the first parameter in the query stmt.setString(2,'Ratan'); int i=stmt.executeUpdate(); System.out.println(i+' records inserted'); con.close(); }catch(Exception e){ System.out.println(e);} } } 
이 예제를 다운로드하세요

레코드를 업데이트하는 ReadyStatement 인터페이스의 예

 PreparedStatement stmt=con.prepareStatement('update emp set name=? where id=?'); stmt.setString(1,'Sonoo');//1 specifies the first parameter in the query i.e. name stmt.setInt(2,101); int i=stmt.executeUpdate(); System.out.println(i+' records updated'); 
이 예제를 다운로드하세요

레코드를 삭제하는 ReadyStatement 인터페이스의 예

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
이 예제를 다운로드하세요

테이블의 레코드를 검색하는 ReadyStatement 인터페이스의 예

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
이 예제를 다운로드하세요

사용자가 n을 누를 때까지 레코드를 삽입하는 ReadyStatement의 예

 import java.sql.*; import java.io.*; class RS{ public static void main(String args[])throws Exception{ Class.forName('oracle.jdbc.driver.OracleDriver'); Connection con=DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:xe','system','oracle'); PreparedStatement ps=con.prepareStatement('insert into emp130 values(?,?,?)'); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println('enter id:'); int id=Integer.parseInt(br.readLine()); System.out.println('enter name:'); String name=br.readLine(); System.out.println('enter salary:'); float salary=Float.parseFloat(br.readLine()); ps.setInt(1,id); ps.setString(2,name); ps.setFloat(3,salary); int i=ps.executeUpdate(); System.out.println(i+' records affected'); System.out.println('Do you want to continue: y/n'); String s=br.readLine(); if(s.startsWith('n')){ break; } }while(true); con.close(); }}