我想在JSP页面中复制从Oracle数据库获得的ResultSet
。我认为一个简单的重新分配可以做到这一点,但似乎失败了。这是我的代码:
ResultSet rset;
ResultSet new_rset;
rset = alljobsBean.getStatus(conn,1,max ,min );
new_rset = rset;
这是错的吗?或者是否有一种特殊的方式来复制我不知道的ResultSet
?
答案 0 :(得分:6)
没有标准方法来复制ResultSet
,没有读取所有数据并将其存储在其他地方。原因是大多数ResultSet
实现不会将所有结果存储在其中,而只是保持与用于根据需要获取结果的数据库的连接。
答案 1 :(得分:5)
new_rset = rset;
不执行任何重复操作。它只是将new_rset
指向rset
指向的同一对象,new_rset
和rset
仅仅是对堆上同一对象的引用。
如果您需要在JSP中复制ResultSet,请考虑使用包含ResultSet
中所有数据的DTOs,这样您就无需保留对ResultSet
的引用风景。使用DTO可以在读完ResultSet
后关闭连接,同时可以在视图中继续访问SQL查询返回的数据。
如果您打算以与ResultSet
类似的方式断开对数据的访问权限,您还可以考虑使用已断开连接的RowSet
而不是ResultSet
,并且还具有以下优势:保留与数据库的连接。
答案 2 :(得分:0)
如果要从数据库获取ResultSet并在JSP页面中显示它,可以考虑使用CachedRowSet。如果您的目标更加雄心勃勃,您可以考虑使用WebRowSet。但是,对于80%的需求,只需将ResultSet中的数据加载到某些DTO中,然后再将其传递给JSP。