logo

Interfejs przygotowanej instrukcji

Interfejs PrzygotowaneStatement jest podinterfejsem Statement. Służy do wykonywania sparametryzowanego zapytania.

Zobaczmy przykład zapytania sparametryzowanego:

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

Jak widać, przekazujemy parametr (?) dla wartości. Jej wartość zostanie ustalona poprzez wywołanie metod ustawiających przygotowanej instrukcji.

Dlaczego warto używać „PreparedStatement”?

Poprawia wydajność : Wydajność aplikacji będzie większa, jeśli użyjesz interfejsu PrzygotowaniedStatement, ponieważ zapytanie jest kompilowane tylko raz.


Jak zdobyć instancję „PreparedStatement”?

Metoda przygotowaniaStatement() interfejsu Connection służy do zwracania obiektu PrzygotujedStatement. Składnia:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metody interfejsu BasedStatement

Poniżej podano najważniejsze metody interfejsu PrzygotujedStatement:

metodaOpis
public void setInt(int paramIndex, int wartość)ustawia wartość całkowitą na podany indeks parametru.
public void setString(int paramIndex, wartość ciągu)ustawia wartość String na podany indeks parametru.
public void setFloat(int paramIndex, wartość zmiennoprzecinkowa)ustawia wartość float na podany indeks parametru.
public void setDouble(int paramIndex, podwójna wartość)ustawia podwójną wartość na podany indeks parametru.
publiczna funkcja wykonywaniaUpdate()wykonuje zapytanie. Służy do tworzenia, upuszczania, wstawiania, aktualizowania, usuwania itp.
publiczny zestaw wyników wykonywaniaQuery()wykonuje zapytanie wybierające. Zwraca instancję ResultSet.

Przykład interfejsu PrzygotowaniedStatement, który wstawia rekord

Przede wszystkim utwórz tabelę zgodnie z poniższym opisem:

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

Teraz wstaw rekordy do tej tabeli według kodu podanego poniżej:

 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);} } } 
pobierz ten przykład

Przykład interfejsu PrzygotowaneStatement, który aktualizuje rekord

 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'); 
pobierz ten przykład

Przykład interfejsu PrzygotowaniedStatement, który usuwa rekord

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
pobierz ten przykład

Przykład interfejsu WhichStatement pobierającego rekordy tabeli

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
pobierz ten przykład

Przykład przygotowanej instrukcji wstawiania rekordów do momentu naciśnięcia przez użytkownika n

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