Probleme de requete SQL avec JDBC

Anysse Messages postés 29 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 17 août 2007 - 27 mai 2007 à 00:13
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 - 28 mai 2007 à 13:01
Bonjour, je bosse sur un application qui repertorie ce que contient une base de donnée
je lis et ecrit donc dans la bdd
enfin presque, pour la lecture, pas de probleme
par contre pour l'ecriture ca marche comme ca :

instruction.executeUpdate("INSERT INTO USER (nom, prenom, age, password)"+"VALUES(aaa,bbb,ccc,ddd));
a peu de choses pres ca marche comme ca

Le probleme c'est que je ne sais pas trop comment inserer des valeurs qui sont dans mes variables (des String)? vu que tout est deja entre " " , comment faire passer mes variables en argument a la requete ?

VOila sinon je suis sous Java avec NetBeans 5.5 et Acces 2003 pour le SGBD

Merci D'avance !

3 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 mai 2007 à 00:29
Salut:

Solution 1:
Presque tous les SGBD avec les quelles j'ai travaillé utilisent les simples quotes '' pour délimiter une chaines de caractères.

String query = "INSERT INTO USER VALUES (1, ' Nom', 'Prenom')";

Solution 2:
Je pense que c'est la solution la plus élégante, elle s'appuie sur l'utilisation des PreparedStatement.

Connection cnx = ...;
String query = "INSERT INTO USER VALUES ( ? , ?, ?)";
PreparedStatement ps = cnx.prepareStatement (query);

ps.setInt (1, 45);
ps.setString (2, "Nom");
ps.setString (3, "Prénom");

ps.executeUpdate ();

J'espère que les couleurs te permettes de voir ce que signifie les indices 1, 2, 3; ce sont les positions de lettres génériques "?".

1: veut dire premier apostrophe
2:  .... ... deuxième ........
etc
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
27 mai 2007 à 02:02
pour un insert to moi j'utilise execute , executequery c'est quand tu as des retour genre pour un select ca renvois un resultset
un update renvois le nombre d'enregistrement qui ont ete affecte donc voila a toi de gerer maitnenant
j'oubliais execute renvoi un boolean

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
28 mai 2007 à 13:01
Je pense que le PreparedStatement est une bonne alternative puisque tu peux en faire une méthode en passant en argumant tes valeurs --> donc tu pourras utiliser ce même prepared statement quand tu aura besoinb d'éxécuter la même requête plus loi dans ton programme. Alors que en faisant un execute query tu ne peux réutiliser la même reque plus loin. C'est pour cela même que l'on appelle les PreparedStatement : requêtes paramétrables. Enfin à la place de 1, 2 ,3 quand tu fait tes setString tu peux également mettre le nom de ta colonne : ps.setString(Nom, 'Toto')

Bonne prog

lafolle

lafolle
0