JDBC-SQL异常用尽的结果集

时间:2018-10-28 12:22:47

标签: java oracle jdbc

我正在尝试使用JDBC编写身份验证功能。我的功能是

 boolean authenticate(String enteredPassword)throws SQLException{
        String query="select password from Manager where email=?";
        PreparedStatement stmt=con.prepareStatement(query);
        stmt.setString(1,"ivedantlodha@gmail.com");
        ResultSet rs=stmt.executeQuery();
        rs.next();
        String password=rs.getString(1);
        if(enteredPassword.equals(password))
            return true;
        return false;

    }

该函数将抛出SQLException Exhausted ResultSet。 rs.next()的输出为false。在sql上执行以下查询以及使用语句

select password from Manager where email='ivedantlodha@gmail.com'

我得到一个有效的输出。 这是desc Manager

的输出
 Name                      Null?    Type
 ----------------------------------------- -------- 
 NAME                           VARCHAR2(20)
 MANAGER_ID                     NUMBER(38)
 EMAIL                          VARCHAR2(50)
 PASSWORD                       VARCHAR2(30)

1 个答案:

答案 0 :(得分:2)

您似乎忽略了rs.next()的值。您应该这样写:

ResultSet rs=stmt.executeQuery();
if (rs.next()) {
    String password=rs.getString(1);
    if(enteredPassword.equals(password)) {
        return true;
    }
}
return false;

也许您的email表中没有Manager的行“ ivedantlodha@gmail.com”。