Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 Closed Resultset:jsp页面中的下一个错误,在通过myEclipse从ojdbc14.jar升级到ojdbc7.jar之后_Java_Jsp_Jdbc - Fatal编程技术网

Java Closed Resultset:jsp页面中的下一个错误,在通过myEclipse从ojdbc14.jar升级到ojdbc7.jar之后

Java Closed Resultset:jsp页面中的下一个错误,在通过myEclipse从ojdbc14.jar升级到ojdbc7.jar之后,java,jsp,jdbc,Java,Jsp,Jdbc,在下面的Java类中创建两个结果集&当返回到jsp页面时,访问下面的结果集&然后循环遍历结果集,将数据放在页面字段中 在ojdbc14.jar上工作正常,但现在通过myEclipse项目升级到了ojdbc7.jar(适用于Oracle 12c)。获取关闭的结果集:访问第一个结果集时jsp页面中的下一个错误 升级完成后,您有什么想法或建议吗 我知道我可以使用集合等,但我试图保持代码与返回的游标结果集相同,以便在jsp页面中访问。谢谢你的帮助 jsp页面: <% BCSData vBCS =

在下面的Java类中创建两个结果集&当返回到jsp页面时,访问下面的结果集&然后循环遍历结果集,将数据放在页面字段中

在ojdbc14.jar上工作正常,但现在通过myEclipse项目升级到了ojdbc7.jar(适用于Oracle 12c)。获取关闭的结果集:访问第一个结果集时jsp页面中的下一个错误

升级完成后,您有什么想法或建议吗

我知道我可以使用集合等,但我试图保持代码与返回的游标结果集相同,以便在jsp页面中访问。谢谢你的帮助

jsp页面:

<%
BCSData vBCS =   
(BCSData)session.getAttribute("com.sherwin.barcodeshipping.bcsData");
%>

<TABLE class="data" >
<TR class="header">
   <TD class="dataTxt"> Order Number    </TD> 
   <TD class="dataTxt">  Rex            </TD>
   <TD class="dataTxt">  Size Code      </TD>
   <TD class="dataTxt">  Loc            </TD>
   <TD class="dataNbr">  Total Cartons  </TD>
   <TD class="dataNbr">  Total Pallets  </TD>
   <TD class="dataNbr">  Total Weight   </TD>
   <TD class="dataNbr"> Total Units     </TD> 
   <TD class="dataNbr"> Order Units     </TD> 
   <TD class="dataNbr"> Order Qty       </TD>                    
</TR>
<% 
 while (vBCS.bolResultSet.next())
 {   
%>
 <TR class="body"> 
   <TD class="dataTxt"><%= vBCS.bolResultSet.getString(1) %> </TD>
   <TD class="dataTxt"><%= vBCS.bolResultSet.getString(2) %> </TD>
   <TD class="dataTxt"><%= vBCS.bolResultSet.getString(3) %> </TD>
   <TD class="dataTxt"><%= vBCS.bolResultSet.getString(4) %> </TD>
   <TD class="dataNbr"><%= vBCS.bolResultSet.getFloat(5) %>  </TD>
   <TD class="dataNbr"><%= vBCS.bolResultSet.getFloat(6) %>  </TD>
   <TD class="dataNbr"><%= vBCS.bolResultSet.getFloat(7) %>  </TD>
   <TD class="dataNbr"><%= vBCS.bolResultSet.getFloat(8) %>  </TD>
   <TD class="dataNbr"><%= vBCS.bolResultSet.getFloat(9) %>  </TD>
   <TD class="dataNbr"><%= vBCS.bolResultSet.getFloat(10) %> </TD>

 </TR>
<%                       
  }
%>
</TABLE>

<HR class="innerMed" > 

<TABLE class="data">
   <TR class="header">
       <TD class="dataTxt"> WHS            </TD> 
       <TD class="dataTxt"> Customer       </TD>
       <TD class="dataTxt"> Dock           </TD>           
       <TD class="dataNbr"> Total Pallets  </TD>
       <TD class="dataNbr"> Total Weight   </TD>
       <TD class="dataNbr"> Total Units    </TD>                  
  </TR>
<% 
   while (vBCS.bolSummaryResultSet.next())
   {   
%>  
   <TR class="body"> 
      <TD class="dataTxt"><%= vBCS.bolSummaryResultSet.getString(1) 
%> </TD>
      <TD class="dataTxt"><%= vBCS.bolSummaryResultSet.getString(2) 
%> </TD>
      <TD class="dataTxt"><%= vBCS.bolSummaryResultSet.getString(3) 
%> </TD>
      <TD class="dataNbr"><%= vBCS.bolSummaryResultSet.getFloat(4)  
%> </TD>
      <TD class="dataNbr"><%= vBCS.bolSummaryResultSet.getFloat(5)  
%> </TD>
      <TD class="dataNbr"><%= vBCS.bolSummaryResultSet.getFloat(6)  
%> </TD>       
   </TR>
<%
   } // while
%>
</TABLE>

这是一个生命周期问题。如果关闭数据库连接,所有相关结果集也将关闭。(数据库已经没有连接了。不要问我以前为什么它能工作。)

因此,您必须更改代码,使其遵循以下顺序:

  • 运行存储过程并检索游标/结果集
  • 执行JSP页面
  • 关闭数据库连接

  • 如果作为存储过程的out参数检索的结果集在语句关闭后继续存在,我找不到任何信息。我认为是这样。如果没有,您还需要等待,然后才能关闭语句。

    问题是ResultSet也必须关闭,通常在语句关闭之前关闭。该语句或连接可能会关闭结果集。但是,有一些标志使结果使用的时间更长,甚至有单独的类型。然而,通常的做法是将结果集铲到某个列表中,并使用该列表

    试试这个:

    vCallStmt = vConnection.prepareCall("BEGIN ship_door_assignment_pkg.assign_dock"
            + "(?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?, ?,?,?,?); END;",
        ResultSet.TYPE_FORWARD_ONLY,
        ResultSet.CONCUR_READ_ONLY,
        ResultSet.HOLD_CURSORS_OVER_COMMIT);
    

    P>最后一个选项应该工作。

    谢谢你的建议,并将考虑第二个。但是,你提到他们的标志,使结果使用更长时间。。。你能解释一下这是怎么做的吗。当我在java类中创建结果集时,这里有一个sysout,然后在进入jsp页面时阅读它们:这里是sysout:BCSData.java assignDock bolSummaryResultSet:oracle.jdbc.driver。ForwardOnlyResultSet@70b37e69BCSData.java assignDock bolResultSet:oracle.jdbc.driver。ForwardOnlyResultSet@399dd91bBCSSummary.jsp assignDock bolsummary结果集:oracle.jdbc.driver。ForwardOnlyResultSet@70b37e69 BCSSummary.jsp assignDock bolResultSet:oracle.jdbc.driver。ForwardOnlyResultSet@399dd91b注意:我看到oracle.jdbc.driver。。。不确定这对于ojdbc7.jar驱动程序的驱动程序节点是否可以接受。但如果你能详细说明设置。谢谢。对不起,我刚看到你关于打开结果集的建议。请稍候。游标\u OVER \u COMMIT);-我会试试的。谢谢
    vCallStmt = vConnection.prepareCall("BEGIN ship_door_assignment_pkg.assign_dock"
            + "(?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?, ?,?,?,?); END;",
        ResultSet.TYPE_FORWARD_ONLY,
        ResultSet.CONCUR_READ_ONLY,
        ResultSet.HOLD_CURSORS_OVER_COMMIT);