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