Предположим, что вы хотите выполнить запрос, такой как следующий, для экземпляра HSQLDB через соединение JDB C:
select * from employees where lastname in ('Stauder', 'Brugger', 'Wieser');
Задача: список имен различается (количество значений, а также сами значения), и мы хотим использовать PreparedStatement
.
Согласно этому ответу , правильный способ сделать это будет:
PreparedStatement statement = connection.prepareStatement(
"select * from employees where lastname in (?)");
/* modify the following line to determine the values dynamically */
Array array = statement.getConnection().createArrayOf("VARCHAR",
new Object[]{"Stauder", "Brugger", "Wieser"});
statement.setArray(1, array);
ResultSet rs = statement.executeQuery();
Однако комментарии указывают, что не все драйверы JDB C поддерживают это. HSQLDB docs говорит, что начиная с версии 2.0 поддерживается setArray()
, но мне неясно, означает ли это, что приведенный выше пример будет работать, особенно с использованием этой конструкции с предикатом in. Кто-нибудь может пролить свет на это?