logo

PreparedStatement sučelje

PreparedStatement sučelje je podsučelje Statementa. Koristi se za izvršavanje parametriziranog upita.

Pogledajmo primjer parametriziranog upita:

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

Kao što vidite, prosljeđujemo parametar (?) za vrijednosti. Njegova vrijednost bit će postavljena pozivanjem metoda postavljača PreparedStatementa.

Zašto koristiti PreparedStatement?

Poboljšava performanse : Izvedba aplikacije bit će brža ako koristite sučelje PreparedStatement jer se upit kompilira samo jednom.


Kako dobiti instancu PreparedStatement?

Metoda pripremeStatement() sučelja Connection koristi se za vraćanje objekta PreparedStatement. Sintaksa:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metode sučelja PreparedStatement

Važne metode sučelja PreparedStatement navedene su u nastavku:

metodaOpis
public void setInt(int paramIndex, int value)postavlja cjelobrojnu vrijednost na dani indeks parametra.
public void setString(int paramIndex, String value)postavlja vrijednost niza na zadani indeks parametra.
public void setFloat(int paramIndex, float value)postavlja float vrijednost na dani indeks parametra.
public void setDouble(int paramIndex, dvostruka vrijednost)postavlja dvostruku vrijednost na dati indeks parametra.
public int executeUpdate()izvršava upit. Koristi se za stvaranje, ispuštanje, umetanje, ažuriranje, brisanje itd.
javni ResultSet executeQuery()izvršava upit odabira. Vraća instancu ResultSet-a.

Primjer sučelja PreparedStatement koje umeće zapis

Prvo napravite tablicu kao što je prikazano u nastavku:

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

Sada umetnite zapise u ovu tablicu pomoću donjeg koda:

 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);} } } 
preuzmite ovaj primjer

Primjer sučelja PreparedStatement koje ažurira 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'); 
preuzmite ovaj primjer

Primjer sučelja PreparedStatement koje briš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'); 
preuzmite ovaj primjer

Primjer sučelja PreparedStatement koje dohvaća zapise tablice

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

Primjer PreparedStatementa za umetanje zapisa dok korisnik 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(); }}