OVH Cloud OVH Cloud

prepared statement et addBatch()

3 réponses
Avatar
Pif
Bonjour, quand on fait des prepared statement, on peut par l'héritage
ajouter des addBacth() ...

est-ce raisonnable ? comment cela se passe-t-il vu qu'on ne peut
qu'utiliser des string :
- faut il avoir remplir tous les champrs du P.S. avant d'ajouter des
statement, peut on ajouter de nouveau P.S. et pas uniquement des
statements, et dans ce cas, qu'advient il de la numérotation des PS
supplémentaires ?

Cette autorisation de l'héritage me parait bien bizarre !

merci !

3 réponses

Avatar
Christophe Tela
Pif wrote:

Bonjour, quand on fait des prepared statement, on peut par l'héritage
ajouter des addBacth() ...

est-ce raisonnable ? comment cela se passe-t-il vu qu'on ne peut
qu'utiliser des string :
On n'est pas obligé d'utiliser des strings.


PreparedStatement ps = ...
...
ps.setInteger(1, 17);
ps.setDouble(2, 4.54);
ps.setString(3, "Coucou");
// Next batch
ps.addBatch();
ps.setInteger(1, 5);
ps.setDouble(2, 3.1415926);
ps.setString(3, "Coucou bis repetita");
...
int[] count = ps.executeBatch();

Avatar
Pif
ce que je veux dire, c'est que quand on fait demande un nouveau
Statement, en contstructeur on ne peut passer qu'une String, et on a pas
les setType qui remplacent les '?' ...

Du coup, quand on a un PreparedStatement, comment ajoute-t-on d'autre
prepared statement ?

Merci !

Pif wrote:


Bonjour, quand on fait des prepared statement, on peut par l'héritage
ajouter des addBacth() ...

est-ce raisonnable ? comment cela se passe-t-il vu qu'on ne peut
qu'utiliser des string :


On n'est pas obligé d'utiliser des strings.

PreparedStatement ps = ...
....
ps.setInteger(1, 17);
ps.setDouble(2, 4.54);
ps.setString(3, "Coucou");
// Next batch
ps.addBatch();
ps.setInteger(1, 5);
ps.setDouble(2, 3.1415926);
ps.setString(3, "Coucou bis repetita");
....
int[] count = ps.executeBatch();



Avatar
Christophe Tela
ce que je veux dire, c'est que quand on fait demande un nouveau
Statement, en contstructeur on ne peut passer qu'une String, et on a pas
les setType qui remplacent les '?' ...

Du coup, quand on a un PreparedStatement, comment ajoute-t-on d'autre
prepared statement ?


Je ne suis pas sûr de comprendre ta question. Je croyais y avoir répondu,
mais je vais compléter mon exemple, cela t'éclairera peut-être.

// On commence par créer un prepared statement
PreparedStatement ps = con.prepareStatement(
"UPDATE EMPLOYEES SET F1 = ? " +
"WHERE F2 > ? AND F3 = ?");
// Et on fait une première ligne dans le batch
ps.setInteger(1, 17);
ps.setDouble(2, 4.54);
ps.setString(3, "Coucou");
// Et une seconde
ps.addBatch();
ps.setInteger(1, 5);
ps.setDouble(2, 3.1415926);
ps.setString(3, "Coucou bis repetita");

// Et maintenant, on appelle 2 fois la requête,
// avec les 2 séries de paramètres
int[] count = ps.executeBatch();