我已成功将我的Java应用程序连接到MySQL,现在我希望用户输入他们的用户名和密码。然后它会向MySQL发送一个查询,寻找具有该用户名的位置,并将给定的密码与数据库中的密码进行比较。
大多数情况下,这个方法是可以工作的。假设用户名是"ABC",密码是"def"。如果在提示输入用户名时,输入了"ABC def",它会说验证成功,同样也适用于密码"def a"。我认为问题在于rs.next(),它仅检查空格之前的任何文本。
有解决方案的想法吗?
大多数情况下,这个方法是可以工作的。假设用户名是"ABC",密码是"def"。如果在提示输入用户名时,输入了"ABC def",它会说验证成功,同样也适用于密码"def a"。我认为问题在于rs.next(),它仅检查空格之前的任何文本。
有解决方案的想法吗?
String databaseUsername = "";
String databasePassword = "";
// Check Username and Password
System.out.print("Enter Username: ");
String name = sc.next();
System.out.print("Enter Password: ");
String password = sc.next();
// Create SQL Query
Statement stmt = connection.createStatement();
String SQL = "SELECT * FROM users WHERE users_name='" + name + "' && users_password='" + password+ "'";
ResultSet rs = stmt.executeQuery(SQL);
// Check Username and Password
while (rs.next()) {
databaseUsername = rs.getString("users_name");
databasePassword = rs.getString("users_password");
}
if (name.equals(databaseUsername) && password.equals(databasePassword)) {
System.out.println("Successful Login!\n----");
} else {
System.out.println("Incorrect Password\n----");
}
PreparedStatement
来避免 SQL 注入攻击。另外,有哪些事情没有正常工作? - Sotirios DelimanolisAND
而不是&&
。 - Philip Whitehouse