2017-02-13 229 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,因此您不能再次使用它來計算您收到的結果數量。

您可以:

  • 運行查詢兩次(最簡單的代碼,但至少清潔和高效的)
  • 查詢表模型,以查看是否有行
  • 提取出查詢結果轉換爲數據結構並將其轉換爲表格模型,並用它來檢查是否有結果