JavaアプリをMySQLに正常に接続しました。次に、ユーザーにユーザー名とパスワードを入力してもらいます。次に、MySQLにクエリを送信し、そのユーザー名のスポットを探してから、指定されたパスワードをデータベース内のパスワードと比較します。そして、ほとんどの場合、これは機能します。ユーザー名が「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----");
}