Stel je hebt een prepared statement als volgt:
Hoe doe ik dit als prepared statement in Java/JDBC wanneer de IN-clausule een variabel aantal waarden kan bevatten? Op dit moment lukt me dat alleen met zoiets als hieronder:
Dit is natuurlijk een erg lelijke en inefficiënte oplossing. Ik wil eigenlijk een setString die een List, Collection of array accepteert. Ik met nadruk bovenstaande oplossing niet gebruiken. Ook wil ik niet zelf de querystring samenstellen. Het moet beslist een prepared statement zijn. Ik heb gegoogled maar geen passende oplossingsrichting kunnen vinden. Het lijkt echt alsof de JDBC-API serieus gehandicapt is met betrekking tot dynamische IN-parameters?
SQL:
1
| SELECT iets FROM tabel WHERE iets IN (?) |
Hoe doe ik dit als prepared statement in Java/JDBC wanneer de IN-clausule een variabel aantal waarden kan bevatten? Op dit moment lukt me dat alleen met zoiets als hieronder:
Java:
1
2
3
4
5
6
7
8
9
10
| public void zoek(List<String> lijst) throws Exception { String query = "SELECT iets FROM tabel WHERE iets IN (?)"; Connection con = null; // getConnection(); PreparedStatement ps = con.prepareStatement(query); for (String s : lijst) { ps.setString(1, s); ResultSet rs = ps.executeQuery(); // ... doe hier iets met result set ... } } |
Dit is natuurlijk een erg lelijke en inefficiënte oplossing. Ik wil eigenlijk een setString die een List, Collection of array accepteert. Ik met nadruk bovenstaande oplossing niet gebruiken. Ook wil ik niet zelf de querystring samenstellen. Het moet beslist een prepared statement zijn. Ik heb gegoogled maar geen passende oplossingsrichting kunnen vinden. Het lijkt echt alsof de JDBC-API serieus gehandicapt is met betrekking tot dynamische IN-parameters?
"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand