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 :
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();
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 (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();
Les seules différences sont dans la construction de la requête SQL, les dernières lignes sont identiques...

Avec ce second code, j'ai l'erreur suivante:
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).
Alors que le premier passe bien !

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