2017-06-09 44 views
1

我希望對我寫的這段代碼有所幫助。使用掃描器值從數據庫中提取數據

這個想法是在掃描儀中輸入一個用戶名'nomU'(例如xx),並使用這個用戶名,程序將在我的數據庫中搜索並將所有與該用戶名關聯的'pref'一個名爲'usermodel'的表。

try { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Veuillez saisir un mot :"); 
    String str = sc.nextLine(); 

    Statement stmt2 = null; 
    String query2 = "SELECT pref FROM usermodel WHERE nomU =" + str + ""; 
    stmt2 = connexion.createStatement(); 
    ResultSet resultat2 = stmt2.executeQuery(query2); 
    while (resultat2.next()) { 
     String pref = (String) resultat2.getString("pref"); 
     System.out.println("l' element , " + pref + ",est une préférence de l'utilisateur " + str + " ."); 
    } 
} catch (SQLException e) { 
} 

這裏是表「的usermodel」看起來像

id  nomU  pref 
------------------------- 
1  xx  adblock 
------------------------- 
2  yy  grammarly 
------------------------- 
3  xx  avast 
------------------------ 

所以nomU = XX的結果應該是(Adblock的和AVAST) ,但它不工作,當我進入用戶名沒有反應, 我必須指出,連接和一切工作完美。

我很感謝您的幫助。

回答

1

字符串應該是'str'之間,但我不建議使用這種方法可能會造成語法錯誤或SQL注入,而不是你在使用PreparedStatement:

String query = "SELECT pref FROM usermodel WHERE nomU = ?"; 

try (PreparedStatement prstm = connection.prepareStatement(query)){ 

    prstm.setSting(str);//set your input the query 

    ResultSet resultat2 = prstm.executeQuery(query2); 
    while (resultat2.next()) { 
     String pref = (String) resultat2.getString("pref"); 
     System.out.println("l' element , " + pref + ",est une préférence de l'utilisateur " + str + " ."); 
    } 
}