0

データベース内の本またはユーザーを検索するためのこのコードは、ユーザーを検索する場合は問題ありませんが、存在しない本を検索する場合は、次のエラーが表示されます。

エラー:結果セットの終了後

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

    }
4

3 に答える 3

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);
}
于 2012-09-07T21:33:31.477 に答える
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

于 2012-09-07T21:34:12.080 に答える
-1

通話できません

rs2.getString("Book_Name")

もしもrs2.next()

あなたのクエリから何も一致しません

select * from books
于 2012-09-07T21:23:45.927 に答える