有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何解决ResultSet关闭后不允许的错误操作

我尝试执行此代码,它将显示以下错误:

java.sql.SQLException.Operation not allowed after ResultSet closed

这是我的密码。在这段代码中,它本身显示了上述错误

<table cellspacing="0">
<%
   try{
       ResultSet rs1=st.executeQuery("select u.post_id,u.userid,u.post_txt from requestdetails as r inner join user_post as u on r.frdname=u.userid where r.userid='"+id+"'");
      while(rs1.next()){

          int post_id=rs1.getInt(1);
          int fid=rs1.getInt(2);
          System.out.println("iiii "+fid);
          String text=rs1.getString(3);
          System.out.println("txttt "+text);

          ResultSet rs3=stat.executeQuery("select * from userdetails where userid='"+fid+"'");
          if(rs3.next()){
              String na=rs3.getString("username");
          System.out.println("username  "+na);
          String img=rs3.getString("profilepic");
          System.out.println("imgee "+img);
%>         
    <tr>
        <td width="5%" style="padding-left:25;" rowspan="2"> <img src="images/<%=img%>" height="60" width="55">  </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
    <tr>
        <td colspan="3" style="padding:7;"><a href="" style="text-transform:capitalize; text-decoration:none; color:#003399;" onMouseOver="" onMouseOut="" id=""><%=rs3.getString("username") %></a>  </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>                      
    <tr>
        <td></td>
        <td colspan="3" style="padding-left:7;"><%=text %></td> 
    </tr>
<%
    ResultSet rr=st.executeQuery("select * from comment_status where post_id='"+post_id+"'");
    while(rr.next()){
        int uid=rr.getInt("userid");
        String cmt=rr.getString("comment");
        ResultSet rrr=stat.executeQuery("select * from userdetails where userid='"+uid+"'");
        if(rrr.next()){
%>
    <tr>
        <td> </td>
        <td width="4%" bgcolor="#EDEFF4" style="padding-left:12;" rowspan="2">  <img src="" height="40" width="47">    </td>
        <td bgcolor="#EDEFF4" style="padding-left:7;" > <a href="" style="text-transform:capitalize; text-decoration:none; color:#3B5998;" onMouseOver="Comment_name_underLine()" onMouseOut="Comment_name_NounderLine()" id="cuname"><%=rrr.getString("username") %></a> </td>         
        <td align="right" rowspan="2" bgcolor="#EDEFF4">
    </tr>
    <tr>
        <td> </td>
        <td bgcolor="#EDEFF4" style="padding-left:7;" colspan="2"><%=cmt %></td>
    </tr>
    <tr>
        <td>   </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
<%
      }
}
%>
    <tr>
        <td> </td>
        <td width="4%" style="padding-left:17;" bgcolor="#EDEFF4" rowspan="2">  <img src="images/" height="33" width="33">    </td>
        <td bgcolor="#EDEFF4" colspan="2" style="padding-top:15;"> 
            <form method="post" name="commenting" onSubmit="return blank_comment_check()" action="commentstatus.jsp"> 
                <input type="text" name="comment_txt" placeholder="Write a comment..." maxlength="420" style="width:100px;" id=""> 
                <input type="hidden" name="postid" value="<%=post_id%>"> 
                <input type="hidden" name="userid" value=""> 
                <input type="submit" name="comment" style="display:none;"> 
            </form> 
        </td>
    </tr>
    <tr>
        <td>   </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
    <tr>
        <td>   </td>
        <td> </td>
        <td> </td>
        <td> </td>
    </tr>
    <tr>
        <td colspan="4"align="right" style="border-top:outset; border-top-width:thin;">&nbsp;  </td>
    </tr>
<%
   }
   }
   }catch(Exception e){
       e.printStackTrace();
   }
%>
</table>
</div> 

我不知道我在上面的代码中犯了什么错误


共 (2) 个答案

  1. # 1 楼答案

    我犯了一个错误,对所有的查询都使用相同的语句

    当我为解决方案创建不同的语句对象时,效果很好

  2. # 2 楼答案

    在我像这样修改代码后,它工作得很好

    Statement stt=con.createStatement();     
      ResultSet rs1=stt.executeQuery("select u.post_id,u.userid,u.post_txt from requestdetails as r inner join user_post as u on r.frdname=u.userid where r.userid='"+id+"'");
      while(rs1.next()){
    
       int post_id=rs1.getInt(1);
       int fid=rs1.getInt(2);
       System.out.println("iiii "+fid);
       String text=rs1.getString(3);
       System.out.println("txttt "+text);
    
          Statement st1=con.createStatement();
           ResultSet rs3=st1.executeQuery("select * from userdetails where userid='"+fid+"'");
           if(rs3.next()){
                        String na=rs3.getString("username");
                        System.out.println("username  "+na);
                        String img=rs3.getString("profilepic");
                        System.out.println("imgee "+img);