【发布时间】:2013-04-08 14:23:35
【问题描述】:
我正在尝试为列表中的每个值运行一个新的 SQL 命令。我有以下内容,它只是为我列表中的金额一次又一次地重复相同的值。
请注意,我必须通过我的数组列表中的值的数量循环 SQL,并将每个值作为名称插入 SQL 中,如下所示。
最好的方法是什么,因为这肯定不是。
int listSize = al.size();
for(int i = 0; i < listSize; i++) {
ResultSet rs1 = name.executeQuery("SELECT sum(hours) FROM PROJECT_TIME WHERE DATE = '"+date+"' AND name = '"+al.listIterator().next()+"'");
al1.add(rs1.getString(1));
rs1.close();
}
System.out.println(al1);
结果:
[70, 70, 70, 70, 70, 70, 70, 70, 70, 70]
预期结果:
[70, 80, 110, 60, 35, 10, 15, 10, 0, 25]
【问题讨论】:
-
你可以试试
name in (print the list)这个子句吗? -
al.listIterator().next()将始终是同一个元素。您需要将迭代器 置于循环之外,然后使用它的方法遍历集合。 -
@NoobUnChained 对不起,你能解释一下你的意思吗?
-
它总是会给你一个新的迭代器实例和迭代器指向的第一个元素,即总是第一个元素?
-
顺便说一句,该代码是否存在 SQL 注入攻击的风险?我听到 DB 人员提到
PreparedStatement以避免此类事情。