rs.next()在java中返回false

时间:2017-04-29 16:29:49

标签: java mysql jdbc

代码登录我的数据库中有条目我的查询工作正常但每当我把任何数据有效或无效时它只显示电子邮件或传递不正确我的rs.next()只返回false。我还验证了jdbc连接它工作正常。使用mySql数据库。

package bean;
import java.sql.*;
public class LoginDao {

public static boolean validate(LoginBean bean){
    boolean status=false;
    try{
        Connection con=ConnectionProvider.getCon();

        PreparedStatement ps=con.prepareStatement("select * from user432 where email=? and pass=?");
        ps.setString(1,bean.getEmail());
        ps.setString(2, bean.getPass());

        ResultSet rs=ps.executeQuery();
        status=rs.next();

    }catch(Exception e){}
    return status;
}
}

1 个答案:

答案 0 :(得分:0)

对我来说,这样做的所有方法都是验证包含所提供的电子邮件地址和密码的特定用户的实际存在。很公平,但你声称你总是从方法中返回 false 。显而易见的原因是,您的查询未找到任何结果,否则rs.next()为真

嗯,它可能是你方法结束时的额外花括号,但是当你把代码复制/粘贴到帖子中时,我们只是假设你只是在那里蠢蠢欲动。

然而,bean.getEmail()bean.getPass()可能没有提供您认为的内容,我不知道,因为我们无法看到 bean 上课。也许你应该尝试的是bean.getEmail().toString()bean.getPass().toString()

如果您的代码产生了一个实际的异常,那么您可以通过维护一个空的 catch 块来隐藏它。很有可能会抛出某种异常并因此从您的方法中提供错误的结果,但是您永远不知道它是什么,因为您没有任何东西可以查看它。您应该将此异常作为 SQLException 而不仅仅是异常,但是嘿,这不是世界末日,而是 catch < / strong>阻止你至少应该放一些东西,可能是:System.out.println("What the....sumthin wrong with ma code!!!");甚至更好:e.printStackTrace();

好奇......数据库表名真的是 user432 吗?或者是用户名?