Parfois, comprendre ce qu'il y a derrière, et l'écrire de manière plus propre permet d'éviter de nombreux soucis
Ici, tu parcours une collection (idHangars) tout en gérant à côté une variable
i qui sert d'indexeur. Bref, deux choses qu'il faut synchroniser pour que cela fonctionne comme attendu (i est bien incrémenté, mais est-il mis à 0 avant la boucle ?).
De plus, la requête est bien compliquée, sans compter le fait qu'elle omet la parenthèse fermante en SQL.
Ici, on cherche simplement à générer une requête SQL, et plus particulièrement une partie de la clause WHERE, qui prendra la forme suivante :
AND (z.Id = 1 OR z.Id = 2 OR z.Id = 3)
Et donc, pour arriver à cela, on peut le faire en une ligne, et qui sera beaucoup plus lisible et maintenable :
requeteHangars += " AND z.Id IN (" + String.Join(", ", idHangars) + ")"
Partager