Du kan ikke binde en liste til en enkelt parameter i en forberedt sætning.
Generer SQL med en parametermarkør for hvert element på listen, for eksempel:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
Selvom du vil generere en ny erklæring for hver forespørgsel, vil jeg stadig anbefale at bruge en PreparedStatement
. Hvis din liste indeholder String
tilfælde, får du den nødvendige escape for at beskytte mod SQL-injektion.
Men selvom det er en sikker type, f.eks. Integer
objekter, nogle drivere eller middleware kan cache PreparedStatements
, og returner en cachelagret forekomst, hvis den samme formular anmodes om. Selvfølgelig ville nogle tests være nødvendige. Hvis dine lister varierer meget i størrelse, vil du have mange forskellige udsagn, og en dårligt implementeret cache er måske ikke forberedt til at håndtere så mange.