我是javaEE的新手并尝试使用数据库。我只是检查数据库中的用户名和密码。这是代码:
protected void CheckUser(String username, String password)
{
try {
connect();
PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
"SELECT * FROM Users where username = ? AND password = ?");
checkDB.setString(1,username);
checkDB.setString(2,password);
ResultSet rs =null;
rs=(ResultSet) checkDB.executeQuery();
if(rs !=null)
{
System.out.println("heheheh");
}
else
{
System.out.println("awwwwww");
}
} catch (Exception e) {
System.out.println("cannot connect");
e.printStackTrace();
}
}
即使登录信息不正确,仍然会阻止代码阻止。我该怎么办?
由于
答案 0 :(得分:3)
executeQuery()
将始终返回ResultSet
个实例。
您想通过调用next()
并检查它是否返回false来检查它是否有任何行。
此外,您需要关闭结果集。
答案 1 :(得分:1)
即使没有返回任何行,ResultSet
对象也不会是null
。使用ResultSet
上的next
方法,如果没有行,则会在第一次通话时返回false
。
此外,您应该在完成ResultSet
和PreparedStatement
之后关闭它们。