【发布时间】:2015-09-17 17:55:17
【问题描述】:
有没有一种有效的方法来获取列表(最好是数组,ResultSet 可以)到SELECT 很多行。
例如:
Connection con = DriverManager.getConnection(host,username,password);
String sql = "SELECT * FROM table_name WHERE food = ? AND expiration > ?";
PreparedStatement stmt = con.prepareStatement(sql);
使用上面的代码,我想从给定数组中获取所有未过期的食物。
String[] foodList = {"banana","apple","orange",...}
到期日期是固定日期(比如说 3 天前)。但是,我的方法是 String 和 PreparedStatement 在一个 for 循环中,该循环循环数组中的食物数量以单独检查过期日期。在我单独执行每个之后,这会创建很多 ResultSets。
【问题讨论】:
-
您需要单独的每个结果吗?如果没有,为什么不使用 select blah blah where food IN (" + list + ") and expiration > ?
-
我试图抢走所有没有过期的食物@eckes
-
@alp 我实际上并不单独需要它们,我会考虑使用
in编辑:sean Bright 向我展示了在这种情况下我将如何使用in -
@Brian 请检查文档。可能会有绩效回报。我不记得 IN 是否使用索引。如果您使用该路线并使用 IN,请务必确认。
-
@alp 谢谢!我读到 IN 有点快
标签: java sql arrays database select