Java CachedRowSet::release()与close()的比较
我使用的是一个Java CachedRowSet::release()与close()的比较,java,cachedrowset,Java,Cachedrowset,我使用的是一个javax.sql.rowset.CachedRowSet对象,我在代码中传递它。填充结果集的ResultSet在将CachedRowSet传递给我的其余代码之前关闭(仅用于读取,我不会以任何方式更新或修改它): 鉴于上述设置,当我处理完CachedRowSet对象时,也close()或release()对象是否有意义?似乎表明close()没有伤害,但没有解决release(),或者两者之间的区别。我想我可以先做一个release(),然后再做一个close(),以防万一,但我想
javax.sql.rowset.CachedRowSet
对象,我在代码中传递它。填充结果集的ResultSet
在将CachedRowSet
传递给我的其余代码之前关闭(仅用于读取,我不会以任何方式更新或修改它):
鉴于上述设置,当我处理完
CachedRowSet
对象时,也close()
或release()
对象是否有意义?似乎表明close()
没有伤害,但没有解决release()
,或者两者之间的区别。我想我可以先做一个release()
,然后再做一个close()
,以防万一,但我想了解更多。请注意,我甚至序列化了CachedRowSet
对象,然后从另一个模块中的String
将其内部化,这样我也可以在重新内部化的实例上调用close()
和release()
,这没有任何意义。我不认为我完全理解您的问题。但是
realese()->释放此CachedRowSet对象的当前内容,并向所有注册的侦听器发送rowSetChanged事件。调用此方法后,将丢弃所有未完成的更新,并且行集不包含任何行。与基础数据源没有交互,任何行集内容、元数据和内容更新都应该是不可恢复的。
链接:()
close()->它继承自结果集
立即释放此ResultSet对象的数据库和JDBC资源,而不是等到它自动关闭时才释放
关闭ResultSet对象不会关闭由ResultSet创建的Blob、Clob或NClob对象。Blob、Clob或NClob对象至少在创建它们的事务期间保持有效,除非调用它们的free方法
关闭ResultSet时,通过调用getMetaData方法创建的任何ResultSetMetaData实例都可以访问
注意:CachedRowSet不会使连接保持活动状态。它只是在执行查询或更新时需要一个连接
希望有帮助:)
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;
}