fhldmw
fhldmw
采纳率100%
2018-09-19 18:22

关于rs.next()返回的问题

5
已采纳

sql = "SELECT userid from USERMANAGER WHERE uname =? AND password =? ";
pstmt = con.prepareStatement(sql);
pstmt.setString(1,userName);
pstmt.setString(2,password);
ResultSet rs = pstmt.executeQuery();
System.out.println(rs!=null);
if(rs.next())
return 1; //核对正确,返回用户标识号
return 0;

这段代码有时返回true,有时返回false,我有两个user,
图片说明第一个返回true,第二个就是false,只有bossorcou为number(1),其余为varchar类型,有知道的大神可以解答一下吗,急用

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 3年前

    你返回的明明是1和0,为什么你说是true false,你的userName 和password分别是什么,哪里来的,你的密码是某种hash(比如md5),你代码在将原文密码转换成hash的过程中是否正确,函数的参数、返回值在哪里。

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 3年前
     另外,感觉你的逻辑不对。请注意:
    当rs有1条记录的时候,rs.next()是false,当有2条或者以上的时候才是true
    而按照你的逻辑,是1条以上登录都成功。我不知道你怎么想的。
    你可以 sql = "SELECT count(*) cnt from USERMANAGER WHERE uname =? AND password =? ";
    然后
    if (rs.getInt("cnt") >0) return 1; else return 0;
    
    点赞 1 评论 复制链接分享

为你推荐