Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso associare un ArrayList a una PreparedStatement in Oracle?

Non puoi associare un elenco a un singolo parametro in un'istruzione preparata.

Genera SQL con l'indicatore di parametro a per ogni elemento nell'elenco, ad esempio:

SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)

Anche se genererai una nuova istruzione per ogni query, ti consiglio comunque di utilizzare un PreparedStatement . Se la tua lista contiene String istanze, otterrai l'escape necessario per proteggerti dall'iniezione SQL.

Ma anche se è un tipo sicuro, come Integer oggetti, alcuni driver o middleware possono memorizzare nella cache PreparedStatements e restituire un'istanza memorizzata nella cache se viene richiesto lo stesso modulo. Certo, sarebbero necessari alcuni test. Se le dimensioni delle tue liste variano notevolmente, avrai molte istruzioni diverse e una cache mal implementata potrebbe non essere pronta per gestirne così tante.