Java IF ELSE 语句

标签 java resultset

快速提问。我得到了下面的代码,它检查数据库中给定的 ID 是否可用,如果是,则检索该 ID 的所有出勤历史记录,否则,如果数据库中不存在该 ID,则应显示错误消息。然而,我得到的代码总是说记录已附加,然后无论 ID 是否存在,都会显示错误消息。我想我可能必须改变代码的顺序等等?可以请您指教吗?

    JButton button = new JButton("Submit");
    button.addActionListener(new ActionListener() {
        @SuppressWarnings("unused")
        public void actionPerformed(ActionEvent arg0) {


        String studentID = textField.getText(); 

        try {

            Statement st = con.con.createStatement();
            ResultSet rs = st.executeQuery("SELECT StudentID, date FROM attendance WHERE StudentID ="+textField.getText());


            while ( rs.next() ) {
                String student = rs.getString("StudentID");
                String date = rs.getString("date");
                System.out.println(student+"");
                System.out.println(date);
            }

            JOptionPane.showMessageDialog(frmAttendanceHistory, "Attendance has been registered.");
            frmAttendanceHistory.setVisible(false);

            if (!rs.next()) {
            JOptionPane.showMessageDialog(frmAttendanceHistory, "A record for the given Student ID doesn't exist");
            }

        } 


        catch (SQLException e) {
        JOptionPane.showMessageDialog(frmAttendanceHistory, "Attendance couldn't be registered. Please try again!");
        e.printStackTrace();
        }
        }
        });

最佳答案

您多次调用rs.next()直到它返回 false (否则你将永远无法退出 while 循环) - 然后你正在调用 rs.next()再次。那你为什么期望它返回 true 呢?

我怀疑你想要类似的东西:

if (rs.next()) {
    String student = rs.getString("StudentID");
    String date = rs.getString("date");
    System.out.println(student+"");
    System.out.println(date);
    JOptionPane.showMessageDialog(frmAttendanceHistory,
       "Attendance has been registered.");
    frmAttendanceHistory.setVisible(false);
} else {
    JOptionPane.showMessageDialog(frmAttendanceHistory,
        "A record for the given Student ID doesn't exist");
}

关于Java IF ELSE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589697/

相关文章:

java - Hibernate 逆向工程从数据库表生成带注释的 POJO 类

Java Wrapper 枚举开关多态性

java-8 - 从 ResultSet 获取日期以用于 java.time 类

java - java.io.Serializable 类的意义是什么?

java - 使用jar中的资源

java - 从正则表达式输出中删除空字符串

java - 从 ResultSet 读取空值

java - sql server 存储过程,无法在 java 中返回结果集

sql - 如何选择一个空的结果集?

perl - 从 Template Toolkit 中的结果集中访问额外的选定列