executeQuery après setString() => KO, remplacement manuel des '?' => Ok
Bonjour,
J'ai un problème concernant la construction d'une requête. Je deviens fou !!!
Tout d'abord j'initialise la connection et ma requete
Code:
1 2 3 4 5 6
|
//initialisation connection (aucun problème)
//......
//initialisation de ma requete
String requestAttribute = "select id from poste where id_salarie = ? " |
Ensuite si je fais :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
//remplacement manuel du '?' par la valeur
requestAttribute = requestAttribute.replaceFirst("\\?","'X12457'");
PreparedStatement currentStatement = connection.prepareStatement(requestAttribute);
ResultSet rsListElement = currentStatement.executeQuery();
while (rsListElement.next()){
//Traitements (passe)
} |
la requête me retourne un resultat, et rsListElement n'est pas vide.
Par contre si je fais :
Code:
1 2 3 4 5 6 7 8 9 10
|
PreparedStatement currentStatement = connection.prepareStatement(requestAttribute);
currentStatement.setObject(1,"X12457");
ResultSet rsListElement = currentStatement.executeQuery();
while (rsListElement.next()){
//Traitements (ne passe jamais)
} |
C'est incompréhensible. je ne vois pas où j'ai fait une erreur.
Ce que je souhaite c'est faire fonctionner la 2nd méthode car le paramètre passé n'est pas forcément une String. J'ai écris la requête en dure pour mes tests mais normalement la requête est chargée depuis un document xml, et les paramètres à fournir proviennent du résultat d'une autre base de données. Bref, je dois faire fonctionner la 2nd méthode (setObject(..))
J'ai essayer setString mais c'est le même problème.
J'y crois pas trop mais si quelqu'un aurait une piste.
Merci.