如何复制数据库ResultSet

时间:2011-07-28 19:53:31

标签: java oracle jsp resultset

我想在JSP页面中复制从Oracle数据库获得的ResultSet。我认为一个简单的重新分配可以做到这一点,但似乎失败了。这是我的代码:

ResultSet rset;
ResultSet new_rset;

rset = alljobsBean.getStatus(conn,1,max ,min );
new_rset = rset;

这是错的吗?或者是否有一种特殊的方式来复制我不知道的ResultSet

3 个答案:

答案 0 :(得分:6)

没有标准方法来复制ResultSet,没有读取所有数据并将其存储在其他地方。原因是大多数ResultSet实现不会将所有结果存储在其中,而只是保持与用于根据需要获取结果的数据库的连接。

答案 1 :(得分:5)

new_rset = rset;不执行任何重复操作。它只是将new_rset指向rset指向的同一对象,new_rsetrset仅仅是对堆上同一对象的引用。

如果您需要在JSP中复制ResultSet,请考虑使用包含ResultSet中所有数据的DTOs,这样您就无需保留对ResultSet的引用风景。使用DTO可以在读完ResultSet后关闭连接,同时可以在视图中继续访问SQL查询返回的数据。

如果您打算以与ResultSet类似的方式断开对数据的访问权限,您还可以考虑使用已断开连接的RowSet而不是ResultSet,并且还具有以下优势:保留与数据库的连接。

答案 2 :(得分:0)

如果要从数据库获取ResultSet并在JSP页面中显示它,可以考虑使用CachedRowSet。如果您的目标更加雄心勃勃,您可以考虑使用WebRowSet。但是,对于80%的需求,只需将ResultSet中的数据加载到某些DTO中,然后再将其传递给JSP。