JDBC连接数据库,通过判断ResultSet集合是否有值来判断登录状态

        现在,很多网站在人们进行登录的时候,只会提示用户登录名或密码错误,但是不会准备提示用户究竟是用户名还是密码错误,那么,在这里,我分享一个方法,可以明确定位到究竟是用户名不存在还是用户输入的密码不对。

        用过JDBC的人相信都应该知道,我们通过执行一条查询sql语句会得到一个ResultSet集合,以登录为例,我们获取到用户填入的用户名(下文称username),密码(下文称password),通过username去查询用户表,select * from user where user_name = ‘username’,这时,我们会得到一个ResultSet集合对象rs,可能有人会认为,要是rs为空的话,就说明此用户名不存在,也就是说未注册,但是这个判断是行不通的,即使用户不存在,rs也是不会为空的,那么应该怎么判断呢?答案就是rs.next()方法,如果rs.next()方法返回值为false的话,说明该用户未注册,此时可以提示用户前往进行注册,但是由于next方法调用之后,把光标移动了,此时再调用while(rs.next()) {}并在循环中取字段值的时候便取不出值了,这个问题应该怎么解决呢,其实很简单,我们在调用while循环之前,调用一下rs.beforeFirst()将光标移动到最开始的位置就可以了。判断的代码如下:

if(!rs.next()) {// 说明该用户未注册

result="用户名不存在,请先进行注册";

}else{

rs.beforeFirst();// 将光标移动到第一行之前

while(rs.next()) {// 说明该用户已注册

Stringpassword=rs.getString("password");

if(password.equals(user.getPassword())) {

result="登录成功";

}else{

result="密码错误,请重新输入";

}

}

}

你可能感兴趣的:(JDBC连接数据库,通过判断ResultSet集合是否有值来判断登录状态)