Salut.
La réponse au pif ne marchera pas malheureusement. En effet, Le ? va être remplacé par 'val1', 'val2, 'val3' mais comme par défaut le driver echape les caractères, cela donnera:
... IN ('''val1'', ''val2'', ''val3''')
Ce qui évidemment n'est pas ce que tu recherche.
La seulle méthode que je connaisse est celle-ci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
// En admettant que tu as tes valeurs dans un object List par exemple
List<String> bindVars = new ArrayList<String>();
bindVars.add("val1");
bindVars.add("val2");
...
// tu peux faire ainsi:
String sql = "select ... where ... IN (";
// préparation de la requête
for ( int i = 0; i < bindVars.size(); i++ ) {
if ( i > 0 ) sql += ", ";
sql += "?";
}
sql += ")";
stmt = conn.preparedStatement(sql);
// on bind...
for ( int i = 0; i < bindVars.size() ; i++ ) {
stmt.setString(i + 1, bindVars.get(i));
}
// et on éxécute
stmt.execute... |
Voilà. Il y a peut-être une autre méthode, mais en tout cas celle-ci marche ;-)
@+
Partager