Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 02/12/2010 18:34:47
- TigerManJ
- Membre
inserer le conténu d'une variable fourni par l'utilisateur
Bonjour,
voila, depuis quelque semaine je suis sur une petite application sous java, j'arrive a me connecter a ma base sans probléme. mais le problème est que je veux inserer le contenu d'une variable saisi par l'utilisateur.
voisi mon code:
state.executeUpdate("INSERT INTO salle (id_salle, nom_salle, type_salle) VALUES (1, Csalle,TSalle )"); // CSalle et TSalle contiennent les valeur saisi par l'utilisateur.
Ma question: comment inserer le contenu d'une variable dans une table.
S.V.P sa urge.
Hors ligne
#2 02/12/2010 18:38:22
- Marc Cousin
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
Bonjour
2 possibilités :
-Concaténer les chaines dans l'ordre SQL (ce n'est pas ce que vous avez fait, vous avez mis Csalle et Tsalle en tant que chaînes de caractères dans l'ordre SQL)
- Utiliser une requête préparée, et lui passer des paramètres. C'est de loin de plus propre.
http://jguillard.developpez.com/JDBC/8.html
Marc.
Hors ligne
#3 06/12/2010 14:11:44
- TigerManJ
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
J'ai finalement eu la solution, merci kameme.
voici ce qe j'ai fiat:
state.executeUpdate("INSERT INTO salle (id_salle, nom_salle, type_salle) VALUES (1, '"Csalle"','"TSalle"' )");
au faite il fallait mettre '" "' au tour de chaque variable pour que psql le considere come une variable au lieu d'une constante.
**mais j'ai un autre question: comment creer une colone id dans psql de type integer capable de s'incrementer automatiquement
Merci d'avance.
Hors ligne
#4 06/12/2010 14:51:25
- Marc Cousin
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
alter table toto add column titi serial;
Marc.
Hors ligne
#5 06/12/2010 15:33:48
- gleu
- Administrateur
Re : inserer le conténu d'une variable fourni par l'utilisateur
Juste pour infos, ce n'est pas PostgreSQL qui reconnait ce format mais votre compilateur.
Guillaume.
Hors ligne
#6 07/12/2010 16:31:41
- TigerManJ
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
Marc Cousin a ecrit: """ alter table toto add column titi serial; """
j'ai essayer dans mon cas c'est : alter table salle add column id_salle serial;
et j'ai le message suivant :
<< NOTICE: ALTER TABLE créera des séquences implicites « salle_id_salle_seq » pour la colonne serial « salle.id_salle »
ERREUR: la colonne « id_salle » de la relation « salle » existe déjà >>
je comprend pas trop.
que doit je faire?
Hors ligne
#7 07/12/2010 16:46:34
- Marc Cousin
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
Ne pas essayer de rajouter une colonne qui existe déjà ? (id_salle de la table salle). Comme indiqué dans le message, on n'a pas le droit de créer une colonne qui existe déjà.
Marc.
Hors ligne
#8 07/12/2010 22:57:20
- flo
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
voici ce qe j'ai fiat:
state.executeUpdate("INSERT INTO salle (id_salle, nom_salle, type_salle) VALUES (1, '"Csalle"','"TSalle"' )");
au faite il fallait mettre '" "' au tour de chaque variable pour que psql le considere come une variable au lieu d'une constante.Merci d'avance.
Ce ne doit pas être ce que vous avez fait : la syntaxe n'est pas correcte. Je suppose que vous avez concaténé les chaînes?
De toute manière, pour des raisons de sécurité, il vaut toujours mieux préparer la requête et utiliser les variables comme expliqué dans le document proposé par Marc :
par exemple (je suppose que cSalle est un int, tSalle une String)
state.executeUpdate("INSERT INTO salle (id_salle, nom_salle, type_salle) VALUES (1, ?,? )");
state.setInt(1,cSalle);
state.setString(2,tSalle);
Hors ligne
#9 09/12/2010 14:48:04
- TigerManJ
- Membre
Re : inserer le conténu d'une variable fourni par l'utilisateur
oui en effet j'ai oubli les +, le code correcte est :
state.executeUpdate("INSERT INTO salle (id_salle, nom_salle, type_salle) VALUES (1, '"+ Csalle +"','"+ TSalle+ "' )");
ET je croit que vous avez raison a propos de préparer la requête et utiliser les variable, mais comme je n'aime pas beaucoup de ligne pour un seul requête alors.....
En tout cas mon probleme est resolu, merci a tous
Hors ligne