Dopo aver esaminato diverse soluzioni in diversi forum e non trovando un buona soluzione, sento che il trucco sottostante che ho trovato è il più facile da seguire e codificare. Si noti tuttavia che ciò non utilizza la query preparata ma ottiene comunque il lavoro svolto:
Esempio: si supponga di avere un elenco di parametri da passare nella clausola 'IN'. Basta inserire una stringa fittizia all'interno della clausola 'IN', diciamo, "PARAM" non denota l'elenco dei parametri che verranno immessi al posto di questa stringa fittizia.
select * from TABLE_A where ATTR IN (PARAM);
È possibile raccogliere tutti i parametri in una singola variabile String nel codice Java. Questo può essere fatto nel modo seguente:
String param1 = "X";
String param2 = "Y";
String param1 = param1.append(",").append(param2);
È possibile aggiungere tutti i parametri separati da virgole in una singola variabile stringa, 'param1', nel nostro caso.
Dopo aver raccolto tutti i parametri in una stringa singola, è sufficiente sostituire il testo fittizio nella query, ad esempio "PARAM" in questo caso, con il parametro String, cioè param1. Ecco cosa è necessario fare:
String query = query.replaceFirst("PARAM",param1); where we have the value of query as
query = "select * from TABLE_A where ATTR IN (PARAM)";
Ora è possibile eseguire la query utilizzando il metodo executeQuery(). Assicurati di non avere la parola "PARAM" nella tua query ovunque. Puoi usare una combinazione di caratteri speciali e alfabeti invece della parola "PARAM" per assicurarti che non ci sia alcuna possibilità che una parola di questo tipo arrivi nella query. Spero tu abbia la soluzione.
Eventuali duplicati di [PreparedStatement IN clausola alternative?] (http://stackoverflow.com/questions/178479/preparedstatement-in-clause-alternatives) – luator