logo

PreparedStatement-interface

De PreparedStatement-interface is een subinterface van Statement. Het wordt gebruikt om geparametriseerde query's uit te voeren.

Laten we het voorbeeld van een geparametriseerde query bekijken:

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

Zoals u kunt zien, geven we parameter (?) door voor de waarden. De waarde ervan wordt ingesteld door de setter-methoden van PreparedStatement aan te roepen.

Waarom PreparedStatement gebruiken?

Verbetert de prestaties : De prestaties van de applicatie zullen sneller zijn als u de PreparedStatement-interface gebruikt, omdat de query slechts één keer wordt gecompileerd.


Hoe krijg ik het exemplaar van PreparedStatement?

De methode prepareStatement() van de Connection-interface wordt gebruikt om het object PreparedStatement te retourneren. Syntaxis:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Methoden van de PreparedStatement-interface

De belangrijke methoden van de PreparedStatement-interface worden hieronder gegeven:

MethodeBeschrijving
public void setInt(int paramIndex, int waarde)stelt de gehele waarde in op de gegeven parameterindex.
public void setString(int paramIndex, String-waarde)stelt de String-waarde in op de opgegeven parameterindex.
public void setFloat(int paramIndex, float-waarde)stelt de float-waarde in op de gegeven parameterindex.
public void setDouble(int paramIndex, dubbele waarde)stelt de dubbele waarde in op de gegeven parameterindex.
public int executeUpdate()voert de query uit. Het wordt gebruikt voor het maken, verwijderen, invoegen, bijwerken, verwijderen enz.
openbare ResultSet executeQuery()voert de selectiequery uit. Het retourneert een exemplaar van ResultSet.

Voorbeeld van de PreparedStatement-interface die de record invoegt

Maak eerst een tabel zoals hieronder weergegeven:

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

Voeg nu records in deze tabel in met de onderstaande code:

 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);} } } 
download dit voorbeeld

Voorbeeld van de PreparedStatement-interface waarmee de record wordt bijgewerkt

 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'); 
download dit voorbeeld

Voorbeeld van de PreparedStatement-interface waarmee de record wordt verwijderd

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

Voorbeeld van de PreparedStatement-interface die de records van een tabel ophaalt

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

Voorbeeld van PreparedStatement om records in te voegen totdat de gebruiker op n drukt

 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(); }}