【发布时间】:2020-07-24 12:51:46
【问题描述】:
假设您想通过 JDBC 连接向 HSQLDB 实例发出如下查询:
select * from employees where lastname in ('Stauder', 'Brugger', 'Wieser');
挑战:名称列表各不相同(值的数量以及值本身),我们想使用PreparedStatement。
根据this answer,正确的做法是:
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();
但是,cmets 表明并非所有 JDBC 驱动程序都支持这一点。 HSQLDB docs 说 setArray() 从 2.0 版开始受支持,但我不清楚这是否意味着上面的示例可以工作,特别是使用带有 in 谓词的这个构造。任何人都可以对此有所了解吗?
【问题讨论】: