Vous n'êtes pas identifié(e).
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
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
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
alter table toto add column titi serial;
Marc.
Hors ligne
Juste pour infos, ce n'est pas PostgreSQL qui reconnait ce format mais votre compilateur.
Guillaume.
Hors ligne
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
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
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
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