2017-02-13 25 views
-3

ちょっと、私は自分のJavaコードに問題があります。 IDFIELDにテキストを入力して「Enter」を押すと、「IDは認識できませんでした。もう一度やり直してください」というメッセージが表示されますが、テーブルの値が表示されます。では、どうすればその問題に対処できますか?だからこここのコードはどのように達成できますか?

は、JavaのEclipseで私のコードです:

IDField.addKeyListener(new KeyAdapter() { 
     public void keyPressed(KeyEvent evnt) { 
      if (evnt.getKeyCode() == KeyEvent.VK_ENTER) { 
       try { 
        String query = "select * from employee where IDNo = ?"; 
        PreparedStatement pst = connection.prepareStatement(query); 
        pst.setString(1, IDField.getText()); 
        ResultSet rs = pst.executeQuery(); 
        table.setModel(DbUtils.resultSetToTableModel(rs)); 

        int count = 0; 
        while (rs.next()) { 
         count += 1; 
        } 
        if (count == 1) { 
         JOptionPane.showMessageDialog(null, "ID Verified!"); 

         IDField.setText(null); 
        } else { 
         JOptionPane.showMessageDialog(null, "ID was'nt recognize, Try again..."); 
        } 
        rs.close(); 
        pst.close(); 
       } catch (Exception e) { 
        JOptionPane.showMessageDialog(null, e); 
       } 
      } 

     } 
    }); 

私はあなたが私を助けることができると思います。ありがとう。

+1

?おそらく同じIDNoを持つ複数の「従業員」ですか? –

+0

?最初のコードでは、 "table.setModel(DbUtils.resultSetToTableModel(rs));"正常に動作します。そして、そのテーブルを置くと私の問題が現れます。 –

答えて

2

あなたのメソッドtable.setModel(DbUtils.resultSetToTableModel(rs));はすでにResultSetを消費していますので、再度使用して結果の数をカウントすることはできません。

次のことが可能です。

  • クエリの結果を抽出があるかどうかを確認するために、クエリ回(コードする最も簡単な、しかし少なくともクリーンで効率的な)
  • クエリテーブルモデルを実行しますデータ構造に変換し、テーブルモデルに変換し、結果があるかどうかを確認するためにも使用します。
関連する問題