【发布时间】:2021-11-01 09:12:53
【问题描述】:
我知道,如果您创建 SQL PreparedStatement 或 ResultSet,您应该在完成后对资源使用 .close()。但是,如果我正在循环并只是在每次迭代中重新创建 PreparedStatement,我是否仍然需要在每次迭代期间调用 .close() ,或者仅在我完成时调用它?
例如,如果我有这个:
private Connection con;
private String[] queries;
private PreparedStatement stmt;
...
create connection
fill array queries with 10 queries in it
...
for (int i = 0; i < 10; i++) {
stmt = con.prepareStatement(queries[i], Statement.RETURN_GENERATED_KEYS);
stmt.executeUpdate();
// necessary?
stmt.close()
}
每次迭代都需要 .close() stmt,还是应该在循环完成时才这样做?为什么或者为什么不?谢谢。
【问题讨论】:
-
这能回答你的问题吗? Close result set in loop using Java
-
您不是“在每次迭代中重新创建 PreparedStatement”,您正在创建一个新的和不同的 PreparedStatement 对象并扔掉previous PreparedStatement 对象!
标签: java jdbc prepared-statement