Bonjour à tous,
j'ai un problème qui me paraît idiot, mais je n'arrive pas à comprendre : j'espère qu'un avis extérieur m'aidera
J'ai une requête que j'exécute, jusque là ok. Le code suivant marche :
Le code suivant ne marchait pas (j'avais commencé par ça parce que la requête était à l'origine tournée comme ça):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 builderRequest .append("WHERE c.`id_bank` = b.`id_bank` AND c.`id_site` = s.`id_site` "); builderRequest .append("AND (s.`path` REGEXP ? OR s.`id_site` = ?)"); preparedStatement = this.connection.prepareStatement(builderRequest .toString()); preparedStatement.setString(1, "(^|;)" + idSite + "($|;)"); preparedStatement.setString(2, idSite); resultSet = preparedStatement.executeQuery();
Les seules différences sont dans la construction de la requête SQL, les dernières lignes sont identiques...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 builderRequest .append("WHERE (s.`path` REGEXP ? OR s.`id_site` = ?) "); builderRequest .append("AND c.`id_bank` = b.`id_bank` AND c.`id_site` = s.`id_site`"); preparedStatement = this.connection.prepareStatement(builderRequest .toString()); preparedStatement.setString(1, "(^|;)" + idSite + "($|;)"); preparedStatement.setString(2, idSite); resultSet = preparedStatement.executeQuery();
Avec ce second code, j'ai l'erreur suivante:
Alors que le premier passe bien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Failed to prepare statement : java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
Or j'ai bien des "?"... alors soit il y a un truc que je n'ai pas vu dans ma seconde requête qui fait que c'est différent, soit il y a quelque chose que je n'ai pas compris ? J'ai du mal à croire qu'on soit obligé d'avoir les "?" dans le dernier "append"
Merci
Partager