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(); }}