有 Java 编程相关的问题?

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

java错误:在结果集结束后

此代码用于在数据库中搜索书籍或用户,搜索用户时没有问题,但搜索不存在的书籍时,出现以下错误:

错误:在结果集结束后

 if(RB1.isSelected()==true)
  {

    Statement stmt = (Statement)conn.createStatement();
    String SQL1 = "select * from usernames";
    ResultSet rs1 = stmt.executeQuery(SQL1);

    String ID ="";

    while(rs1.next())
    {          
        ID = rs1.getString("UserID");
        if(UIorBItf.getText().compareTo(ID) == 0)
        {
          JOptionPane.showMessageDialog(null,rs1.getString("Full_Name") +
           " is available","Query result",JOptionPane.INFORMATION_MESSAGE);
           break;
        }
    }

     if(UIorBItf.getText().compareTo(ID) != 0)
     {
       JOptionPane.showMessageDialog(null, UIorBItf.getText() +" is 
       not available","Query result",JOptionPane.INFORMATION_MESSAGE);
     }

  }
  if(RB2.isSelected()==true)
    {
     //JOptionPane.showMessageDialog(null, UIorBItf.getText() +" Now 
     //You are inside Book search","Query result",JOptionPane.INFORMATION_MESSAGE);

         Statement stmt2= (Statement)conn.createStatement();

         String SQL2 = "select * from books";

         ResultSet rs2 = stmt2.executeQuery(SQL2);
         String ID ="";

            while(rs2.next())
            {
                ID = rs2.getString("BookID");
                if(ID.compareTo(UIorBItf.getText()) ==0)
                {
                 JOptionPane.showMessageDialog(null,rs2.getString("Book_Name") +
                  " is available","Query result",JOptionPane.INFORMATION_MESSAGE);
                     break;     
                }
            }
            if(UIorBItf.getText().compareTo(ID)!=0)
               {
                 JOptionPane.showMessageDialog(null,rs2.getString("Book_Name") +
                  " is not available","Query result",JOptionPane.INFORMATION_MESSAGE);
               }
    }
    }catch(Exception e)
    {
                  System.out.println("Error: " + e.getMessage());

    }

共 (1) 个答案

  1. # 1 楼答案

    问题在于:

    if(UIorBItf.getText().compareTo(ID)!=0)
    {
        JOptionPane.showMessageDialog(null,rs2.getString("Book_Name") +
        " is not available","Query result",JOptionPane.INFORMATION_MESSAGE);
    }
    

    您不能从这里调用rs2.getString("Book_Name"),因为只有当while循环完成时,您才会在这里结束。此时,由于rs2.next()返回false,您将已经越过最后一行