logo

Interface PreparedStatement

L'interface PreparedStatement est une sous-interface de Statement. Il est utilisé pour exécuter une requête paramétrée.

Voyons l'exemple de requête paramétrée :

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

Comme vous pouvez le voir, nous passons le paramètre (?) pour les valeurs. Sa valeur sera définie en appelant les méthodes setter de PreparedStatement.

Pourquoi utiliser PreparedStatement ?

Améliore les performances : Les performances de l'application seront plus rapides si vous utilisez l'interface PreparedStatement car la requête n'est compilée qu'une seule fois.


Comment obtenir l’instance de PreparedStatement ?

La méthode prepareStatement() de l'interface Connection est utilisée pour renvoyer l'objet de PreparedStatement. Syntaxe:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Méthodes de l’interface PreparedStatement

Les méthodes importantes de l'interface PreparedStatement sont indiquées ci-dessous :

MéthodeDescription
public void setInt (int paramIndex, valeur int)définit la valeur entière sur l'index de paramètre donné.
public void setString (int paramIndex, valeur de chaîne)définit la valeur de chaîne sur l'index de paramètre donné.
public void setFloat (int paramIndex, valeur flottante)définit la valeur flottante sur l'index de paramètre donné.
public void setDouble (int paramIndex, valeur double)définit la valeur double sur l'index de paramètre donné.
public int exécuterUpdate()exécute la requête. Il est utilisé pour créer, supprimer, insérer, mettre à jour, supprimer, etc.
public ResultSet exécuterQuery()exécute la requête de sélection. Il renvoie une instance de ResultSet.

Exemple d'interface PreparedStatement qui insère l'enregistrement

Tout d’abord, créez le tableau comme indiqué ci-dessous :

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

Insérez maintenant les enregistrements dans ce tableau par le code donné ci-dessous :

 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);} } } 
téléchargez cet exemple

Exemple d'interface PreparedStatement qui met à jour l'enregistrement

 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'); 
téléchargez cet exemple

Exemple d'interface PreparedStatement qui supprime l'enregistrement

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
téléchargez cet exemple

Exemple d'interface PreparedStatement qui récupère les enregistrements d'une table

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
téléchargez cet exemple

Exemple de PreparedStatement pour insérer des enregistrements jusqu'à ce que l'utilisateur appuie sur 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(); }}