我尝试创建一个函数,您输入保存在MySQL数据库中的student_id(“student_id”),您将看到学生姓名以及他们注册的课程。我遇到了if / else语句的问题但是。如果输入的student_id在数据库中,它可以工作,但如果输入的ID不是,则不会打印出我想要的错误消息;它只是回到菜单。
System.out.println("\nStudent Enrollment\n");
try {
Scanner input = new Scanner(System.in);
System.out.println("Enter Student ID to See What Classes they are enrolled in: ");
String user_entered_student_id = input.nextLine();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", "");
Statement myStmt = con.createStatement();
ResultSet rs;
rs = myStmt.executeQuery("SELECT student_id, student_name, class_id, classname FROM ClassSelector.student_x_class WHERE student_id = " + user_entered_student_id);
while(rs.next()){
String studentInClass = (rs.getString("student_id") + "\t" + rs.getString("student_name") + " " + rs.getString("class_id") + " " + rs.getString("classname"));
if(!user_entered_student_id.equals("ClassSelector.students.student_id")){
System.out.println(studentInClass);
}
else{
System.out.println("This Student does not Exist!");
}
}
}
答案 0 :(得分:1)
你有while
循环中的逻辑,在没有行存在的情况下永远不会输入。
试
boolean found = false;
while(rs.next()){
if(!user_entered_student_id.equals("ClassSelector.students.student_id")){
System.out.println(studentInClass);
found = true;
break; // ?? Is this unique?
}
}
if (!found) {
System.out.println("This Student does not Exist!");
return false; // ???
}
return true; // ???
当然,如果您只查找一条唯一记录,则可以使用if
代替while
答案 1 :(得分:0)
主要原因是因为如果你的连接将返回一个空的结果集,那么循环while(rs.next()){ }
将不会被执行。
当数据库中没有匹配的条目时,rs.next返回false。