Java里的如果ResultSet关闭 Connection自动关闭怎么实现 java中可以直接关闭获得的Connection 实例,关闭数据库连接实例后,所有建立在这个数据库实例上面的资源,结果集便自动关闭 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以每次都去关闭ResultSet,pstmt,conn等资源。但是如果你直接关闭connection的话,这个conn上的其他资源也会被关闭,就像楼上说的那样 对于connection、resultset等等之类的资源,建议的做法是:遵循谁打开谁关闭,尽量不要在一个方法中打开传入另一个方法中关闭,这样很容易出问题。 如果有resultSet的话,一般会有try-catch模块,你可以再catch模块后面的finally模块里面把连接都关了,这样在处理完resultset后会关闭你打开的连接 可以动态代理,重新resultSet的的close方法 可以考虑在 login 去调用一个持久层访问 statement 时提供一个 call back 让它来自己取数据。持久层只负责连接到数据库并执行 SQL, 至于 ResultSet 中的数据如何使用则用 callback 来负责,查询完了立即关闭了连接。如:public void doQuery(String sql, Filler callback) { ... try { callback.beginData(); while(rs.next() ) { callback.next(); } callback.endData(); } catch (SQLException e) { callback.processException(e); } try { rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { // 这里 不是Callback 的职责。 }} 如果是 java web 程序,可以在web里加一个过滤器,得到的连接全部放到 request 里,或者通过 ThreadLocal 存储当前线程使用的 Connection,当返回时,则从 request 或者从 ThreadLocal 中取出Connection,并且关闭它。这样,程序别的地方就不用关心连接是否被关闭的事了。 valueOf() 【约瑟夫环的问题】 JAVA中一个String的内容包含另一个String的内容的语句是什么? 帮我写个JAVA程序。跪谢了 Java开发网站有什么优势? 请教关于删除数组中元素的问题 线程池中的线程可以多次使用吗? 求jdk源代码下载 一个对数据库的数据操作的问题 scjp求助,这道题应该选什么,以及原因,谢谢 为什么java的继承,在方法和成员变量两边表现不一样呢 JAVA递归
但是如果你直接关闭connection的话,这个conn上的其他资源也会被关闭,就像楼上说的那样
public void doQuery(String sql, Filler callback) {
...
try {
callback.beginData();
while(rs.next() ) {
callback.next();
}
callback.endData();
} catch (SQLException e) {
callback.processException(e);
}
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// 这里 不是Callback 的职责。
}
}