Bonsoir,
je voudrais faire la mise à jour d'une table (base de données Access) dans ma page JSP,
alors j'ai mis le code suivant :
Code :
PreparedStatement stmt = connection.prepareStatement("UPDATE employee SET Nom = 'XXX'" );
stmt.setInt(1, 1);
stmt.setString(2, "XX" );
stmt.setString(3, "XXX" );
stmt.executeUpdate();
mais j'obtiens l'erreur suivant:
javax.servlet.ServletException: L'index 1 est hors limites
besoin d'aide,
et merci
Publicité
Posté le 07-10-2009 à 20:05:31
brisssou
8-/
Posté le 07-10-2009 à 21:22:12
ça donne envie ton projet...
sinon, tu essaies de valoriser les attributs de ta requête, mais j'en vois aucun.
Message édité par brisssou le 07-10-2009 à 21:22:24
---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
cbeyls
Hail to the King, Baby
Posté le 08-10-2009 à 02:42:30
Il faut voir le type de données SQL du champ associé à la première variable de ton PreparedStatement (incomplet ici dans ton exemple puisque comme Brissou, je ne vois aucun "?" ).
Si ce n'est pas le type SQL INTEGER, tu dois peut-être utiliser setBigDecimal() ou setShort() au lieu de setInt().
Marakima
Magical Dreamers
Posté le 08-10-2009 à 18:53:36
j'ai modifié le code par :
Code :
PreparedStatement stmt = connection.prepareStatement("UPDATE employee SET Id=?, Nom=?, Prenom=?" );
stmt.setInt(1, 1);
stmt.setString(2, "xx" );
stmt.setString(3, "xx" );
stmt.executeUpdate();
alors je n'obtiens plus le message d'erreur, mais aucune mise à jour ne se fait !
brisssou
8-/
Posté le 08-10-2009 à 20:55:31
il manque pas un where ?
t'aurais pas un gros message d'erreur te disant que tu peux pas avoir des ID en doubles ??
---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
cbeyls
Hail to the King, Baby
Posté le 08-10-2009 à 22:48:29
Oui Marakima, tu devrais d'abord apprendre le SQL.
Je pense que ta requête devrait être:
"UPDATE employee SET Nom='?', Prenom='?' WHERE Id=?"
Marakima
Magical Dreamers
Posté le 09-10-2009 à 14:16:49
Ah désolé désolé !!
je me suis trompé dans la syntaxe, voilà :
Code :
PreparedStatement stmt = connection.prepareStatement("UPDATE employee SET Nom=?, Prenom=? WHERE Id=?" );
stmt.setInt(1, 1);
stmt.setString(2, "XX" );
stmt.setString(3, "XX" );
stmt.executeUpdate();
mais le problème c'est que la mise à jour ne se fait pas,
et je reçois le message suivant:
cause mère
java.lang.IllegalArgumentException: Cannot create table with name of existing table
alors qu'est ce que je pourrais faire pour régler ce problème ?
---------------
In A Different Time...In Another Place...We'll Meet Again...
cbeyls
Hail to the King, Baby
Posté le 09-10-2009 à 14:52:50
Je ne vois pas le rapport vu que tu fais un update et non un create, mais je te rappelle que vu qu'on a changé l'ordre des paramètres dans la requête, tu dois adapter le reste du code en conséquence (string, string, int et pas int, string, string).