logo

Vmesnik PreparedStatement

Vmesnik PreparedStatement je podvmesnik Statementa. Uporablja se za izvajanje parametrizirane poizvedbe.

Oglejmo si primer parametrizirane poizvedbe:

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

Kot lahko vidite, posredujemo parameter (?) za vrednosti. Njegova vrednost bo nastavljena s klicem nastavitev metod PreparedStatement.

Zakaj uporabljati PreparedStatement?

Izboljša delovanje : Delovanje aplikacije bo hitrejše, če uporabljate vmesnik PreparedStatement, ker se poizvedba prevede samo enkrat.


Kako pridobiti primerek PreparedStatement?

Metoda pripraveStatement() vmesnika Connection se uporablja za vrnitev predmeta PreparedStatement. Sintaksa:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metode vmesnika PreparedStatement

Spodaj so navedene pomembne metode vmesnika PreparedStatement:

MetodaOpis
public void setInt(int paramIndex, int value)nastavi vrednost celega števila na podani indeks parametra.
public void setString(int paramIndex, String value)nastavi vrednost niza na podani indeks parametra.
public void setFloat(int paramIndex, float value)nastavi plavajočo vrednost na podani indeks parametra.
public void setDouble(int paramIndex, dvojna vrednost)nastavi dvojno vrednost na podani indeks parametra.
public int executeUpdate()izvede poizvedbo. Uporablja se za ustvarjanje, spuščanje, vstavljanje, posodabljanje, brisanje itd.
public ResultSet executeQuery()izvede izbirno poizvedbo. Vrne primerek ResultSet.

Primer vmesnika PreparedStatement, ki vstavi zapis

Najprej ustvarite tabelo, kot je prikazano spodaj:

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

Zdaj vstavite zapise v to tabelo s kodo, podano spodaj:

 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);} } } 
prenesite ta primer

Primer vmesnika PreparedStatement, ki posodobi zapis

 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'); 
prenesite ta primer

Primer vmesnika PreparedStatement, ki izbriše zapis

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
prenesite ta primer

Primer vmesnika PreparedStatement, ki pridobi zapise tabele

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
prenesite ta primer

Primer PreparedStatement za vstavljanje zapisov, dokler uporabnik ne pritisne 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(); }}