龙行龘龘龘龘
2018-09-19 18:22
采纳率: 100%
浏览 3.3k
已采纳

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

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条回答 默认 最新

  • threenewbee 2018-09-19 19:04
    已采纳

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

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • threenewbee 2018-09-19 19:08
     另外,感觉你的逻辑不对。请注意:
    当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;
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题