错误:结果集结束后

时间:2012-09-07 21:16:29

标签: java resultset

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

错误:结果集结束后

 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());

    }

3 个答案:

答案 0 :(得分:0)

if(UIorBItf.getText().compareTo(ID)!=0)
{
                                      // problem is here
                                      // from other code I am guessing you want UIorBItf.getText()
                                      // instead of rs2.getString("Book_Name")
   JOptionPane.showMessageDialog(null,rs2.getString("Book_Name") +
       " is not available","Query result",JOptionPane.INFORMATION_MESSAGE);
}

答案 1 :(得分:0)

问题在于:

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后的最后一行。

答案 2 :(得分:-1)

你不能打电话

rs2.getString("Book_Name")

如果rs2.next()

与查询中的任何内容都不匹配

select * from books