首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CachedRowSet:它还可以用来保存ResultSet数据吗?

CachedRowSet:它还可以用来保存ResultSet数据吗?
EN

Stack Overflow用户
提问于 2012-04-27 05:37:30
回答 3查看 6.7K关注 0票数 7

我想写一个java函数,它接受SQL查询并返回一个ResultSet以便在别处处理。不能这样做,因为一旦连接关闭,ResultSet就会死掉。

我用谷歌搜索了一下,发现了一个看起来像是解药的VERY OLD (2004) OReilly article:CachedRowSet。您只需输入您的ResultSet,CachedRowSet将保存数据,让您关闭连接并使用返回的CachedRowSet在别处处理数据。

这篇文章引用了Sun的CachedRowSet实现,这些实现似乎无处可寻。

现代的javadoc(对于Java1.5和更高版本)似乎有相同名称的东西,"CachedRowSet",它不仅仅是ResultSet数据的持有者。这个"CachedRowSet“似乎完成了整个数据库处理,从获取连接到其他所有事情。

"CachedRowSet“是不是和以前那篇文章里说的一样?

我想要一些简单的东西,就像以前的文章一样。连接关闭后,要将ResultSet放入其中进行处理的内容。

有这样的动物吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-06-23 00:41:44

CachedRowSet是一个标准的Java接口。Sun写了一个参考实现,和Sun/Oracle JDK contains it。如果您正在使用不同的JDK,则该实现或其他实现可能不可用,也可能不可用。

如果您已经有一个ResultSet,那么您可以使用populate方法从它填充一个CachedRowSet

如果您有足够的前瞻性来使用Java7,那么您可以使用具有createCachedRowSet方法的RowSetFactory以一种可移植的方式获得CachedRowSet实例。您可以从RowSetProvider获取RowSetFactory (当然!)。

票数 5
EN

Stack Overflow用户

发布于 2012-04-27 05:58:50

javax.sql.rowset.CachedRowSet仅仅是一个接口。有一个Sun/Oracle专有实现,但它不受支持,因此使用起来有风险。

现在的大多数代码都遵循“转换为pojos”模型。

票数 -1
EN

Stack Overflow用户

发布于 2012-06-22 23:15:54

如果您只想传输数据,而不需要CachedRowSet提供的所有函数,那么最好将结果集数据放在一个列表中。

代码语言:javascript
复制
   List<Object> list = new ArrayList<Object>();
   ResultSet rs = stmt.executeQuery("select * from myTable");
   while(rs.next()) {
         List<Object> row = new ArrayList<Object>();
         row.add(rs.getObject(1));
         row.add(rs.getObject(2));
         row.add(rs.getObject(3));
         //And so on, or you can use the ResultSetMetaData to determine the number of columns
         list.add(row);
   }
   rs.close();

完成后,您可以将该列表对象发送到您想要的任何位置,然后遍历它以获取数据。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10341785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档