Java / MySQL中的if / else语句

时间:2016-03-03 00:15:29

标签: java mysql

我尝试创建一个函数,您输入保存在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!");
              }
          }   
      }

2 个答案:

答案 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。