Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment lier une ArrayList à une PreparedStatement dans Oracle ?

Vous ne pouvez pas lier une liste à un seul paramètre dans une instruction préparée.

Générez du SQL avec un marqueur de paramètre pour chaque élément de la liste, par exemple :

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

Même si vous allez générer une nouvelle déclaration pour chaque requête, je vous recommande toujours d'utiliser un PreparedStatement . Si votre liste contient String instances, vous obtiendrez l'échappement nécessaire pour vous protéger de l'injection SQL.

Mais même s'il s'agit d'un type sûr, comme Integer objets, certains pilotes ou middleware peuvent mettre en cache PreparedStatements , et renvoie une instance mise en cache si le même formulaire est demandé. Bien sûr, des tests seraient nécessaires. Si vos listes varient considérablement en taille, vous aurez de nombreuses déclarations différentes, et un cache mal implémenté pourrait ne pas être prêt à en gérer autant.