虽然已经多次讨论过,但可以在最短的范围内关闭数据库资源。我想知道是否可以重用语句对象,它不会返回任何结果集。 例如,像这样的代码,
Statement st = con.getStatement();
st.execute(TABLE1_DELETE_Query);
st.execute(TABLE2_DELETE_Query);
st.close();
我查看了有关SF的类似问题,但我无法找到可以回答我的问题。如果已经回答,请提及参考。
由于
答案 0 :(得分:3)
陈述的有效期应保持短期,但重新使用它们完全没问题。
单个未关闭的ResultSet可能会导致应用程序挂起,但您可以拥有100个未关闭的语句而不会出现问题。通常,语句将保留与数据库连接相关联的非常小的内存,而不是其他内容,但它可以保存多个结果集,这些结果集可以由getMoreResults()方法返回,警告getWarnings()方法。 / p>
在一个方法中多次重复使用Statement然后关闭它是一种很好的做法,因为它可以节省不必要地创建额外的语句。创建一个声明并挂在它上面以防它被通缉是不好的做法。
PreparedStatements旨在重复使用,但最好将它们保留在单个方法的范围内,因为这可以保证它们具有短期寿命。