Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CachedRowSet::release()与close()的比较_Java_Cachedrowset - Fatal编程技术网

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;
}