logo

Interfață PreparedStatement

Interfața PreparedStatement este o subinterfață a Statement. Este folosit pentru a executa interogări parametrizate.

Să vedem exemplul de interogare parametrizată:

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

După cum puteți vedea, trecem parametrul (?) pentru valori. Valoarea acestuia va fi setată prin apelarea metodelor de setare din PreparedStatement.

De ce să folosiți PreparedStatement?

Îmbunătățește performanța : Performanța aplicației va fi mai rapidă dacă utilizați interfața PreparedStatement deoarece interogarea este compilată o singură dată.


Cum să obțineți instanța PreparedStatement?

Metoda prepareStatement() a interfeței Connection este utilizată pentru a returna obiectul PreparedStatement. Sintaxă:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metode ale interfeței PreparedStatement

Metodele importante ale interfeței PreparedStatement sunt prezentate mai jos:

MetodăDescriere
public void setInt(int paramIndex, int valoare)setează valoarea întreagă la indexul parametrului dat.
public void setString(int paramIndex, String value)setează valoarea String la indexul parametrului dat.
public void setFloat(int paramIndex, valoare float)setează valoarea float la indexul parametrului dat.
public void setDouble(int paramIndex, valoare dublă)setează valoarea dublă la indexul parametrului dat.
public int executeUpdate()execută interogarea. Este folosit pentru crearea, plasarea, inserarea, actualizarea, ștergerea etc.
public ResultSet executeQuery()execută interogarea de selectare. Returnează o instanță a ResultSet.

Exemplu de interfață PreparedStatement care inserează înregistrarea

Mai întâi de toate, creați un tabel după cum este prezentat mai jos:

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

Acum introduceți înregistrări în acest tabel după codul de mai jos:

 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);} } } 
descărcați acest exemplu

Exemplu de interfață PreparedStatement care actualizează înregistrarea

 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'); 
descărcați acest exemplu

Exemplu de interfață PreparedStatement care șterge înregistrarea

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
descărcați acest exemplu

Exemplu de interfață PreparedStatement care preia înregistrările unui tabel

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
descărcați acest exemplu

Exemplu de PreparedStatement pentru a introduce înregistrări până când utilizatorul apasă 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(); }}