2016-02-26 99 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

相關問題