2017-06-09 43 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 + " ."); 
    } 
}