logo

Rozhranie PreparedStatement

Rozhranie PreparedStatement je podrozhraním príkazu Statement. Používa sa na vykonanie parametrizovaného dotazu.

Pozrime sa na príklad parametrizovaného dotazu:

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

Ako vidíte, odovzdávame parameter (?) pre hodnoty. Jeho hodnota bude nastavená volaním setter metód PreparedStatement.

Prečo používať PreparedStatement?

Zlepšuje výkon : Výkon aplikácie bude rýchlejší, ak použijete rozhranie PreparedStatement, pretože dotaz sa kompiluje iba raz.


Ako získať inštanciu PreparedStatement?

Metóda PrepareStatement() rozhrania Connection sa používa na vrátenie objektu PreparedStatement. Syntax:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metódy rozhrania PreparedStatement

Dôležité metódy rozhrania PreparedStatement sú uvedené nižšie:

MetódaPopis
public void setInt(int paramIndex, int hodnota)nastaví celočíselnú hodnotu na daný index parametra.
public void setString(int paramIndex, hodnota reťazca)nastaví hodnotu String na daný index parametra.
public void setFloat(int paramIndex, float value)nastaví hodnotu float na daný index parametra.
public void setDouble(int paramIndex, double value)nastaví hodnotu double na daný index parametra.
public int executeUpdate()vykoná dotaz. Používa sa na vytváranie, vypúšťanie, vkladanie, aktualizáciu, mazanie atď.
public ResultSet executeQuery()vykoná výberový dotaz. Vráti inštanciu ResultSet.

Príklad rozhrania PreparedStatement, ktoré vkladá záznam

Najprv vytvorte tabuľku, ako je uvedené nižšie:

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

Teraz vložte záznamy do tejto tabuľky podľa kódu uvedeného nižšie:

 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);} } } 
stiahnite si tento príklad

Príklad rozhrania PreparedStatement, ktoré aktualizuje záznam

 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'); 
stiahnite si tento príklad

Príklad rozhrania PreparedStatement, ktoré vymaže záznam

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
stiahnite si tento príklad

Príklad rozhrania PreparedStatement, ktoré načítava záznamy tabuľky

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
stiahnite si tento príklad

Príklad pripraveného výpisu na vloženie záznamov, kým používateľ nestlačí kláves 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(); }}