java - 此 jdbc 资源是否已关闭?

标签 java jdbc

回顾我的代码,我发现我偶尔会写:

ResultSet rs = conn.createStatement().executeQuery("select * from main");
//snip
rs.close();

有时我写过

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("Select * from main");
//snip
rs.close();
st.close();

在第二个代码段中,Statement关闭的比较明显,但在第一个代码段中是否也关闭了? conn.createStatement() 返回一个语句对象,但是当它像这样实例化时,我看不到任何简单的方法来在完成后关闭它。我是否应该只重写各种代码以使用方法 #2?

最佳答案

一个好的做法是将 rs.close()st.close() 放在您的 finally 子句中。

Statement st;
ResultSet rs;

try {
   st = connection.createStatement(...);
   rs = st.executeQuery();
}
catch (JdbcErrorsExceptionsAndFoo exception) {
   // yadda yadda
}
finally {
    if (rs!= null) {
        rs.close();
    }
    if (st != null) {
        st.close();
    }
}

关于java - 此 jdbc 资源是否已关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7127849/

相关文章:

java - 您可以像 Java 应用程序一样部署用 smalltalk/squeak/pharo 编写的应用程序吗?

java - 抽象类的集合(或类似的东西......)

java - 通过在java中读取mySQL表创建JSON文件

java - 如何排列Java GUI按钮?

java - 使用 If 条件迭代 ArrayList 并使用流 api 返回 boolean 标志

java - CDH4、Sqoop2 和 JDBC 驱动程序 : no suitable driver found

java - 如何使用 Java 在 SQL 中获取列的中位数/众数/范围?

java - 我的数据库 servlet 中的连接出错

MySql 时区 JDBC 问题

java - 如何从结果集中检索 SQL COUNT 函数的结果?