Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie binde ich eine ArrayList an ein PreparedStatement in Oracle?

Sie können eine Liste nicht an einen einzelnen Parameter in einer vorbereiteten Anweisung binden.

Generieren Sie SQL mit einer Parametermarkierung für jedes Element in der Liste, zum Beispiel:

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

Auch wenn Sie für jede Abfrage eine neue Anweisung generieren, empfehle ich dennoch die Verwendung eines PreparedStatement . Wenn Ihre Liste String enthält -Instanzen erhalten Sie das notwendige Escaping zum Schutz vor SQL-Injection.

Aber selbst wenn es ein sicherer Typ ist, wie Integer Objekte, einige Treiber oder Middleware können PreparedStatements zwischenspeichern , und geben Sie eine zwischengespeicherte Instanz zurück, wenn dasselbe Formular angefordert wird. Natürlich wären einige Tests notwendig. Wenn Ihre Listen in der Größe stark variieren, haben Sie viele verschiedene Anweisungen, und ein schlecht implementierter Cache ist möglicherweise nicht darauf vorbereitet, so viele zu verarbeiten.