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