2016-02-26 77 views
0

我试图将用户输入的值(学生ID)与mysql数据库中的student_id值进行比较。我想让用户输入一个学生ID并返回一个字符串“Is(student_name)是正确的学生?” student_name来自数据库。这是我迄今为止所做的,signUp()是switch语句的一部分。我认为问题来自user_entered_student_id变量。我试图让这是用户输入的id,但是当我尝试运行该程序时,它表示该变量从不使用。任何想法都会有帮助!将用户输入的数据与SQL数据库数据进行比较

static void signUp() { 
     System.out.println("\nSign Up For a Class\n"); 
     try { 
      Scanner input = new Scanner(System.in); 
      System.out.println("Enter Student ID: "); 
      String user_entered_student_id = input.nextLine(); 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector", "", ""); 
      Statement myStmt = con.createStatement(); 
      ResultSet rs; 
      rs = myStmt.executeQuery("SELECT student_name FROM ClassSelector.students WHERE student_id =" + user_entered_student_id"); 
      while (rs.next()) { 
       String userEnterId = rs.getString("student_name"); 
       System.out.println("Is " + userEnterId + " the correct student?"); 


String confirm = input.nextLine(); 
        if(confirm == "Y"){ 
        System.out.println("Enter ID From Classes Available: "); 
        System.out.println("SELECT * FROM ClassSelector.classes"); 
        } 
       } 
      } catch (Exception exc) { 
       exc.printStackTrace(); 
      } 
     } 
+1

使用'PreparedStatement'并通过您的参数。 –

回答

2

这种说法不使用user_entered_student_id变量:

ResultSet rs = myStmt.executeQuery(
    "SELECT student_name FROM ClassSelector.students " + 
    "WHERE student_id = user_entered_student_id"); 

它应该是:

ResultSet rs = myStmt.executeQuery(
    "SELECT student_name FROM ClassSelector.students " + 
    "WHERE student_id = " + user_entered_student_id); 
+0

真棒,这工作!谢谢您的帮助! – Rassisland

+0

@Rassisland作为PM 77-1已经在你的问题下面的评论中指出 - 你应该使用'PreparedStatement'来创建带参数的查询 - 避免这种错误更安全和容易。 –

+0

我更新了代码并添加了一个不工作的额外位。我试图获得确认“Y”来运行代码,但在输入Y后,它只是重置并不打印最后两行,任何ideads? – Rassisland

相关问题