logo

Interfaccia PreparedStatement

L'interfaccia PreparedStatement è una sottointerfaccia di Statement. Viene utilizzato per eseguire query parametrizzate.

Vediamo l'esempio di query parametrizzata:

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

Come puoi vedere, stiamo passando i parametri (?) per i valori. Il suo valore verrà impostato chiamando i metodi setter di PreparedStatement.

Perché utilizzare PreparedStatement?

Migliora le prestazioni : le prestazioni dell'applicazione saranno più veloci se si utilizza l'interfaccia PreparedStatement perché la query viene compilata una sola volta.


Come ottenere l'istanza di PreparedStatement?

Il metodo prepareStatement() dell'interfaccia Connection viene utilizzato per restituire l'oggetto di PreparedStatement. Sintassi:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metodi dell'interfaccia PreparedStatement

I metodi importanti dell'interfaccia PreparedStatement sono riportati di seguito:

MetodoDescrizione
public void setInt(int paramIndex, valore int)imposta il valore intero sull'indice del parametro specificato.
public void setString(int paramIndex, valore String)imposta il valore String sull'indice del parametro specificato.
public void setFloat(int paramIndex, valore float)imposta il valore float sull'indice del parametro specificato.
public void setDouble(int paramIndex, double valore)imposta il valore double sull'indice del parametro specificato.
public int eseguireAggiornamento()esegue la query. Viene utilizzato per creare, eliminare, inserire, aggiornare, eliminare, ecc.
public ResultSet eseguireQuery()esegue la query di selezione. Restituisce un'istanza di ResultSet.

Esempio di interfaccia PreparedStatement che inserisce il record

Prima di tutto crea la tabella come indicato di seguito:

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

Ora inserisci i record in questa tabella con il codice indicato di seguito:

array Java ordinato
 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);} } } 
scarica questo esempio

Esempio di interfaccia PreparedStatement che aggiorna il record

 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'); 
scarica questo esempio

Esempio di interfaccia PreparedStatement che elimina il record

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

Esempio di interfaccia PreparedStatement che recupera i record di una tabella

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

Esempio di PreparedStatement per inserire record finché l'utente non preme 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(); }}