Problème de requête
Résolu
Helene
-
Helene -
Helene -
Bonjour à tous,
Je travaille actuellement sur un projet en java et pour ça j'ai créer ma base de données sur phpmyadmin. J'ai connecté ma base à eclipse, mais le problème se pose lorsque je veux ajouter un élément donné en argument de la fonction à mon tableau (qui n'a pour l'instant qu'une colonne) .
J'arrive à ajouter n'importe quelle chaîne de caractère ce qui bloque c'est que ça soit une variable.
String sql = "INSERT INTO javadb (personne) VALUES ('j')";
Lorsque je remplace le 'j' par nom qui est le nom de ma variable ça ne fonctionne pas.
J'ai aussi essayé :
.$nom.
$nom
"nom"
'nom'
Rien n'y fait je ne trouve pas.
De l'aide serait donc de la bienvenue.
Cordialement,
Hélène
Je travaille actuellement sur un projet en java et pour ça j'ai créer ma base de données sur phpmyadmin. J'ai connecté ma base à eclipse, mais le problème se pose lorsque je veux ajouter un élément donné en argument de la fonction à mon tableau (qui n'a pour l'instant qu'une colonne) .
J'arrive à ajouter n'importe quelle chaîne de caractère ce qui bloque c'est que ça soit une variable.
String sql = "INSERT INTO javadb (personne) VALUES ('j')";
Lorsque je remplace le 'j' par nom qui est le nom de ma variable ça ne fonctionne pas.
J'ai aussi essayé :
.$nom.
$nom
"nom"
'nom'
Rien n'y fait je ne trouve pas.
De l'aide serait donc de la bienvenue.
Cordialement,
Hélène
A voir également:
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table
- Impossible de supprimer une page word - Guide
- Table ascii - Guide
- Creation de site web - Guide
- Table de matière word - Guide
- Google moteur de recherche page d'accueil - Guide
2 réponses
Je pense qu'il faut que tu concatène ta chaine ('Select ... ') avec ta variable pour faire ce que tu veux.
Bonjour,
Il te faut un Prepared Statement.
https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
Il te faut un Prepared Statement.
https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
String sql = "INSERT INTO javadb (personne) VALUES (?)"; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1, nom); // "nom" est une variable de type String ps.executeUpdate();
Bonjour,
Merci pour votre réponse, j'obtiens une erreur par contre :/ :
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
at com.objis.demojdbc.DemoJdbc.sauverEnBase(DemoJdbc.java:34)
at com.objis.demojdbc.DemoJdbc.main(DemoJdbc.java:12)
Merci pour votre réponse, j'obtiens une erreur par contre :/ :
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
at com.objis.demojdbc.DemoJdbc.sauverEnBase(DemoJdbc.java:34)
at com.objis.demojdbc.DemoJdbc.main(DemoJdbc.java:12)
Tu as :
Si tu avais utilisé le code que j'ai mis, en cas d'erreur tu aurais du avoir :
De plus ton import doit pas être bon, tu as du importer com.mysql.jdbc.* mais c'est java.sql.* qu'il faut importer !
at com.mysql.jdbc.Statement.executeUpdatec'est à dire que tu as directement exécuté la requête avec "?" sans remplacer la valeur.
Si tu avais utilisé le code que j'ai mis, en cas d'erreur tu aurais du avoir :
at java.sql.PreparedStatement.executeUpdate()
De plus ton import doit pas être bon, tu as du importer com.mysql.jdbc.* mais c'est java.sql.* qu'il faut importer !
Exemple :
Si je concatène comme ceci :
Cela donne ceci :
Et bim ! Ça supprime toute la table !