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

Hvordan binder jeg en ArrayList til en PreparedStatement i Oracle?

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.



  1. Vil du slippe en database, som andre brugere får adgang til?

  2. Hibernate @Enumerated ser ud til at blive ignoreret

  3. Hvordan forhindrer man denne forespørgsel i at udskrive de samme resultater to gange?

  4. hvordan man opdaterer data ved hjælp af dvaleforespørgsel med overordnet egenskab i where-klausulen