Java IF-ELSE语句
快速提问。我得到了下面的代码,它检查数据库中是否有给定的ID,如果有,它将检索该ID的所有考勤历史记录,否则如果该ID在数据库中不存在,它将显示一条错误消息。然而,我得到的代码总是说记录已附加,然后显示错误消息,不管ID是否存在。我想我可能必须改变代码的顺序或者类似的?你能给我个建议吗Java IF-ELSE语句,java,resultset,Java,Resultset,快速提问。我得到了下面的代码,它检查数据库中是否有给定的ID,如果有,它将检索该ID的所有考勤历史记录,否则如果该ID在数据库中不存在,它将显示一条错误消息。然而,我得到的代码总是说记录已附加,然后显示错误消息,不管ID是否存在。我想我可能必须改变代码的顺序或者类似的?你能给我个建议吗 JButton button = new JButton("Submit"); button.addActionListener(new ActionListener() { @S
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()
。那你为什么期望它会变成真的呢
我猜你想要的是:
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");
}
你正在做第二个rs.next,如果有第二个记录的话,它将进入第二个记录。如果只有一个(它已经在你的应用程序中被进一步使用),那么它会失败,给你一个成功,然后是一个失败
while ( rs.next() ) {
接
if (!rs.next()) {
没有任何意义,因为
if
将始终执行。你的循环将继续,直到rs.next()
返回false。AARGH为什么我总是被JON SKEET打败???“我有那么多美好的话要说……”乔恩·斯基特,谢谢你的建议。您的代码可以工作,但不会循环?因为我们得到的是if语句而不是while语句。如果我必须使用给定的ID记录怎么办?我刚刚试过,它只显示了第一条记录,即使给定ID有两条记录?@PitaSivam:不,它不会循环。循环似乎没有任何意义,因为您只是在控制台上打印。如果您确实想循环,您可能只需要创建一个列表
或类似的东西,然后在循环后,您可以检查列表是否为空。您可以建议如何使用列表吗?我想我需要循环,因为代码需要遍历数据库并挑选出具有给定ID的所有记录,一旦遍历,并且没有记录,它应该显示错误消息。如果找到记录,显然,它不应该显示错误消息?@PitaSivam:首先,你需要一个考勤类来表示日期和学生。然后创建ArrayList
的实例。在循环中,您将创建一个考勤的实例
,并将其添加到列表中。老实说,如果这对您来说是一个新领域,那么在继续使用数据库之前,您真的应该后退一步,看看Java的核心(集合,创建您自己的类)。