Bonjour,
Dans ma base de données mes passwords sont encryptés avec la fonction PASSWORD. C'est pourquoi quand je veux trouver si un login existe, je fais la requête suivante :
ce qui fonctionne dans mon interface phpMyadmin
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM Login WHERE (login='monemail' AND password = PASSWORD ('monpasswd'))
Dans mon code java, j'ai écrit ceci :
Ce code me donne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 String query = "SELECT * FROM Login WHERE (login=? AND password = PASSWORD (?));"; try { connection = ConnectionManagerJdbc.getInstance( ).getConnection( ); PreparedStatement ps = connection.prepareStatement( query ); ps.setString( 1, login ); ps.setString( 2, password ); rs = ps.executeQuery( query );
java.sql.SQLException: Syntax error or access violation message from server: "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 '? AND password = PASSWORD (?))' at line 1"
Je suis embêtée étant donnée que j'ai testé la syntaxe dans phypMyadmin. La seule différence, ce sont les quotes autour des points d'interrogation. Mais si je les mets, PreparedStatement considère que je n'ai plus qu'une seule entrée et non deux. Il me fait donc une erreur de taille de tableau.
Des idées neuves et lumineuses ?![]()
Merci
Partager