gpt4 book ai didi

java - CachedRowSet::release() 与 close()

转载 作者:行者123 更新时间:2023-12-01 13:53:43 24 4
gpt4 key购买 nike

我正在使用我在代码中传递的javax.sql.rowset.CachedRowSet对象。在将 CachedRowSet 传递给我的代码的其余部分之前,填充它的 ResultSet 被关闭(仅用于阅读,我不会以任何方式更新或修改它) ):

public CachedRowSet getData(String query) throws SQLException {
RowSetFactory aFactory = RowSetProvider.newFactory();
CachedRowSet crs = aFactory.createCachedRowSet();
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
crs.populate(rs);
} finally {
DbUtils.closeQuietly(null, stmt, rs);
}
return crs;
}

鉴于上述设置,当我完成时,还 close()release() CachedRowSet 对象是否有意义它? This answer似乎表明 close() 不会造成伤害,但不会解决 release() 或两者之间的差异。我想我可以先执行一个 release() ,然后执行一个 close() 以防万一,但我想了解更多。请注意,我什至序列化了 CachedRowSet 对象,然后从其他模块中的 String 内部化它,这样我也可以调用 close() 和 release() 在重新内部化的实例上,这没有任何意义。

最佳答案

我想我不完全理解你的问题。但是..

realese() -> 释放此 CachedRowSet 对象的当前内容并向所有注册的监听器发送 rowSetChanged 事件。调用此方法后,任何未完成的更新都将被丢弃,并且行集不包含任何行。与基础数据源没有交互,任何行集内容、元数据和内容更新都应该是不可恢复的。链接:( http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/CachedRowSet.html )

close() -> 它继承自 ResultSet立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生。

关闭 ResultSet 对象不会关闭该 ResultSet 创建的 Blob、Clob 或 NClob 对象。 Blob、Clob 或 NClob 对象至少在创建它们的事务期间保持有效,除非调用它们的 free 方法。

当 ResultSet 关闭时,通过调用 getMetaData 方法创建的任何 ResultSetMetaData 实例仍然可以访问。

注意: CachedRowSet 不会保持连接处于 Activity 状态。它只需要在执行查询或更新时建立连接。

希望有帮助:)

关于java - CachedRowSet::release() 与 close(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com