【发布时间】:2017-08-02 12:59:23
【问题描述】:
我只是想知道我是否声明ArrayList<PreparedStatement> ps = new ArrayList<>(); 并使用此方法添加语句。
public void addQuery(String query){
try{
Connection con = connect();
PreparedStatement p = con.prepareStatement(query);
ps.add(p);
} catch (Exception e){
}
}
如果我调用ps.clear 方法,存储在ArrayList<> 中的连接和PreparedStatements 是否会被关闭?我试过这个
public void addQuery(String query){
try(Connection con = connect(); PreparedStatement p = con.prepareStatement(query);){
ps.add(p);
}
}
但是当我执行存储在ArrayList<> 中的PreparedStatements 时,我得到了错误
语句关闭后不允许任何操作。
最好的办法是什么?
【问题讨论】:
-
最好的办法是忘记将
PreparedStatements放在列表中。我不知道你想用它来实现什么,但它没有任何意义,只会让你的代码变得不必要地复杂。 -
从不写
catch (Exception e){ }总是正确处理异常 -
这听起来是个糟糕的方法。还记得你遇到的最后一个问题吗?你只是让你的代码更脆弱。在开始发明自己的“聪明”解决方案之前,请尝试使用标准习语。
-
@UsagiMiyamoto
ArrayList.clear()与PreparedStatement.close()完全无关。 -
@SedrickJefferson 仅关于标题。实际问题与答案完全不同。