J'ai cherché et n'ai pas trouvé de réponse au défi suivant que je suis en train de vivre. Cela semble assez simple mais je n’ai pas pu le résoudre.
J'ai un ArrayList
d'ID d'enregistrement de type Long
-> ArrayList<Long>
. J'aimerais utiliser cette liste d'identifiants d'enregistrement pour sélectionner des lignes dans une autre table. Jusqu'ici tout va bien. Maintenant sur le défi ...
a) J'utilise une instruction préparée pour sélectionner les données d'une table en utilisant le ArrayList
comme entrée pour cela.
selectPS = dbConnection.prepareStatement("select columnA from tableA where id in ?");
Question sur ce qui précède - comment définir le paramètre? Ce qui précède ne semble pas correct pour un paramètre de type ArrayList
.
b) Je rencontre également des problèmes lors de la définition de la valeur du paramètre pour l'instruction préparée. Il n'y a pas de méthode pour définir une valeur de type ArrayList
et je ne vois aucune autre option viable.
---> selectPS.set?????(1, arraylistParameter);
ResultSet rs = selectPS.executeQuery();
Toute aide ou direction que vous pouvez me donner est grandement appréciée.
Merci.
Vous voudrez peut-être utiliser la méthode setArray
comme indiqué dans le javadoc ci-dessous:
Exemple de code:
PreparedStatement pstmt =
conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", new Object[]{"1", "2","3"});
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();
Si vous avez ArrayList, convertissez-le en Array [Object]
ArrayList<String> list = new ArrayList<String>();
PreparedStatement pstmt =
conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", list.toArray());
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();