注意JDBC数据库连接中资源关闭的顺序

【摘要】 在JDBC连接数据库时首先要获得connection,再通过它获得相应的statement,最后获得结果集resultset.这些过程都会占用内存资源,所以我们常常会在方法调用结束后关闭相应的资源节约内存空间。这时如果关闭的顺序不对,像下面这样,有时就会出现异常。 public static void closeAllResource(Connection conn,State…

在JDBC连接数据库时首先要获得connection,再通过它获得相应的statement,最后获得结果集resultset.这些过程都会占用内存资源,所以我们常常会在方法调用结束后关闭相应的资源节约内存空间。这时如果关闭的顺序不对,像下面这样,有时就会出现异常。

        public static void closeAllResource(Connection conn,Statement st,ResultSet rs) {
            if (conn!=null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
   
            if (st!=null) {
                try {
                    st.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if (rs!=null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (Connection is closed)
 at org.sqlite.core.DB.newSQLException(DB.java:909)
 at org.sqlite.core.CoreStatement.internalClose(CoreStatement.java:115)
 at org.sqlite.jdbc3.JDBC3Statement.close(JDBC3Statement.java:35)
 at org.sqlite.jdbc4.JDBC4Statement.close(JDBC4Statement.java:27)
 at com.tools.JdbcUtils.close(JdbcUtils.java:94)
 at com.tools.BaseDao2.update(BaseDao2.java:38)
 at com.test.testjdbc.main(testjdbc.java:30)

如果connection关闭了,后面Statement和ResultSet相关的操作就会受到影响。所以平时一定要注意关闭资源的先后顺序,先关闭ResultSet,然后是Statement,最后是Connetion,刚好与创建相应对象时的顺序相反。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享