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