Bonjour,

J'ai toujours entendu dire qu'utiliser des PreparedStatement permettait d'améliorer les temps d'exécution des requêtes grâce à la précompilation (si le driver la supporte).
Je ne doute pas que ça soit vrai dans un cas comme celui ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
PreparedStatement ps = connection.prepareStatement("SELECT ...");
  for (...) {
    // set des paramètres
    ps.setObject(...);
    // exécution
    ResultSet rs = ps.executeQuery();
    //exploitation du résultat
    ...;
  }
mais si l'instance de PreparedStatement n'est utilisée qu'une seule fois, par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void methodA() {
for (int i=...) {
  ResultSet rs = methodB(i);
  //exploitation du résultat
  ...;
}
}
 
void methodB(int param) {
  PreparedStatement ps = connection.prepareStatement("SELECT ...");
  // set des paramètres
  ps.setObject(param...);
  // exécution
  return ps.executeQuery();
}
est-ce que c'est toujours le cas ?

J'ai (beaucoup) simplifié le code ci-dessus, car je me pose la question d'un point de vue théorique. Je sais qu'il faut libérer les ressources, etc. Je sais aussi qu'il ne faut pas chercher à optimiser avant d'avoir des problèmes de performance: je veux juste savoir si dans la façon de faire du deuxième cas les PreparedStatement sont pertinents.

Au passage il s'agit d'une connexion à une base DB2...

Merci d'avance