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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM Login WHERE (login='monemail' AND password = PASSWORD ('monpasswd'))
ce qui fonctionne dans mon interface phpMyadmin

Dans mon code java, j'ai écrit ceci :

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 );
Ce code me donne l'erreur suivante :

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