如何检查ResultSet是否返回了结果?

时间:2013-07-01 22:15:08

标签: java prepared-statement resultset

我是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();
    }

}

即使登录信息不正确,仍然会阻止代码阻止。我该怎么办?

由于

2 个答案:

答案 0 :(得分:3)

executeQuery()将始终返回ResultSet个实例。

您想通过调用next()并检查它是否返回false来检查它是否有任何行。

此外,您需要关闭结果集。

答案 1 :(得分:1)

即使没有返回任何行,ResultSet对象也不会是null。使用ResultSet上的next方法,如果没有行,则会在第一次通话时返回false

此外,您应该在完成ResultSetPreparedStatement之后关闭它们。