Du kan inte binda en lista till en enskild parameter i en förberedd sats.
Generera SQL med en parametermarkör för varje element i listan, till exempel:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
Även om du kommer att generera ett nytt uttalande för varje fråga, rekommenderar jag fortfarande att du använder en PreparedStatement
. Om din lista innehåller String
instanser får du den nödvändiga flykten för att skydda mot SQL-injektion.
Men även om det är en säker typ, som Integer
objekt, vissa drivrutiner eller mellanprogram kan cache PreparedStatements
, och returnera en cachad instans om samma formulär begärs. Visst skulle vissa tester behövas. Om dina listor varierar mycket i storlek kommer du att ha många olika uttalanden, och en dåligt implementerad cache kanske inte är beredd att hantera så många.