现在,很多网站在人们进行登录的时候,只会提示用户登录名或密码错误,但是不会准备提示用户究竟是用户名还是密码错误,那么,在这里,我分享一个方法,可以明确定位到究竟是用户名不存在还是用户输入的密码不对。
用过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="密码错误,请重新输入";
}
}
}