PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#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

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;

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.

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à.

Hors ligne

#8 07/12/2010 22:57:20

flo
Membre

Re : inserer le conténu d'une variable fourni par l'utilisateur

TigerManJ a écrit :

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

Pied de page des forums