繁体   English   中英

在同一表中使用两个结果集时发生错误

[英]Error occure while using two resultset in same table

我是初学者。 在我的项目中,我正在使用Java和Mysql。 在执行代码时出现错误。 该代码在下面提到

<%
       ResultSet rs=s.fetchtask(userid);
       while(rs.next())
       {
%> 
         <table border="1">
             <tr><td>
              <% int qnid=(rs.getInt("question_id")); 
                 ResultSet rs1=s.fetchqn(qnid);
                 String qn=rs1.getString("question");
              %> 
                  <% out.println(qn);%>
               </td></tr>
         </table>
      <%
          }
       %> 

但是当我不使用第二个获取其工作时

<%
       ResultSet rs=s.fetchtask(userid);
       while(rs.next())
       {
%> 
         <table border="1">
             <tr><td>
              <% int qnid=(rs.getInt("question_id"));     
              %> 
                  <% out.println(qnid);%>
               </td></tr>
         </table>
      <%
          }
       %> 

当我使用此代码时,没有问题。 请有人帮我。 显示的错误是

org.apache.jasper.JasperException: An exception occurred processing JSP page /setter.jsp at line 142

 139:                        // ResultSet rs1 = st.executeQuery("SELECT * FROM temp_qb  WHERE question_id="+qnid+"");
 140:                         ResultSet rs1=s.fetchqn(qnid);
 141:                           //  ResultSet rs1=s.fetchqn(qnid);
 142:                         String qn=rs1.getString("question");
 143:                          %> 
 144:                          <% //out.println(qn);
 145:                          %>

我已经解决了 问题是每个Statement对象只能同时打开一个ResultSet对象。 因此,如果一个ResultSet对象的读取与另一个对象的读取是交错的,则每个都必须由不同的Statement对象生成。 如果存在打开的语句,Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。 这样通过使用另一条语句就可以解决。

  • 您没有检查结果集以确保您具有数据。 这可能导致异常。

几乎没有什么可做的,我建议您尝试一下,看看是否仍然遇到相同的错误。

<%
       ResultSet rs=s.fetchtask(userid);
       while(rs.next())
       {
%> 
         <table border="1">
             <tr><td>
              <% int qnid=(rs.getInt("question_id")); 
                 ResultSet rs1=s.fetchqn(qnid);
                 while(rs1.next())
                 { 
                    String qn=rs1.getString("question");
                    out.println(qn);
                 } 
              %>
               </td></tr>
         </table>
<%
       }
%> 
  • 另外,请确保使用正确的列名从结果集中获取数据。
  • 使用完结果集和数据库连接后,请务必正确关闭它们。

最后,

  • 如果要构建新的东西,请避免使用Scriplets。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM