我正在尝试使用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)
答案 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”。