2
データベース情報でユーザー入力を検証しようとしています。ユーザーがユーザー名を入力すると、データベースと一致するかどうかがチェックされます。データベースによるJavaユーザー名とパスワードの検証
public void login() throws SQLException {
boolean loginUsername = false;
boolean loginPassword = false;
String input = null;
while(input == null) {
System.out.println(message.loginUsername());
input = in.nextLine();
try {
preparedStatement = connect.prepareStatement("SELECT username FROM doom.accounts;");
rs = preparedStatement.executeQuery();
while(rs.next()) {
String username = rs.getString("username");
if(!input.equals(username)) {
System.out.println(message.invalidUsername());
input = null;
} else {
loginUsername = true;
}
}
} catch(SQLException e) {
} finally {
if(statement != null) {
statement.close();
}
}
}
}
私は方法のユーザー名部分を投稿しました。私はデバッグして、私のユーザ入力がデータベースから有効なユーザ名と等しいことを確認することができますが、それはすべきではないときに私はまだ無効なユーザ名のメッセージを受け取ります。
データベースを使用しているので、SQL文で 'where'句を使用して、正しいユーザー名を持つテーブルの行をデータベースで検索させてみましょう。それははるかに効率的です。 – hexafraction
heed @ hexafractionのアドバイス。あなたがそれをやっている方法は非常に非効率です。 – JJF
データベースの列名が 'username'ではなく' USERNAME'に戻っている可能性がありますので、 'rs.getString(" USERNAME ")'または 'rs.getString(1)'を試してみてください。 @hexafractionのような 'where'節を使ってください。 – GriffeyDog