2017-02-13 99 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,因此您不能再次使用它来计算您收到的结果数量。

您可以:

  • 运行查询两次(最简单的代码,但至少清洁和高效的)
  • 查询表模型,以查看是否有行
  • 提取出查询结果转换为数据结构并将其转换为表格模型,并用它来检查是否有结果
相关问题