我正在尝试使用数据库信息验证用户输入。因此,如果用户输入用户名,它将检查是否与数据库匹配。
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();
}
}
}
}
我只发布了该方法的用户名部分。我已经调试过并且可以确认我的用户输入与数据库中的有效用户名相同,但是当它不应该时我仍然收到无效的用户名消息。
答案 0 :(得分:2)
通过编写SQL查询来测试它,当你在字符串中执行equals检查时,确保两个字符串中的情况相同。
如果案件不重要,您可以使用equalsIgnoreCase()
。
更好的方法是将您的查询更改为:
select username from doom.accounts where username like ?
请记住省略';'
查看preparedStatement并在?
您可以查看here。