//验证用户是否存在
public int userLogin(Users user) throws SQLException{
String sql="select * from users where userName=? and password=?";
getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
rs=pstmt.executeQuery();
          return rs.getRow();
}
为什么返回的结果总是0啊?

解决方案 »

  1.   

    你的用户名,密码不存在呗,看看是不是把username和password传到方法里面去了
      

  2.   

    这种方式
    用select count(*) as c,最后用ResultSet去把c的值拿出来比较保险。
    总是0可能是某些jdbc驱动并未实现这个抽象方法,或者某些数据库的问题。(某版本的access有此问题)
      

  3.   

    我也觉得采用count的方式比较好。
    另外也可以return rs==null?0:1;//0无用户,1有用户
      

  4.   

    rs.getRow();指的是当当前行的行号,不是多少行的意思。这么判定不好。。用COUNT的确是不错的选择将SQL修改为:
    select count(userName) from users where userName=? and password=?然后使用:
    if(rs.next()) {
      return rs.getInt(1);//返回数量
    }
    return 0;//如果前面没执行完毕记得返回一个0。最后记得把一些该关闭的东西关闭掉。
      

  5.   

    建议在程序中加入输出user.getUserName()  和 user.getpassword()的语句  验证传入的两个参数是不是和数据库里面的一样
      
      

  6.   

    把 sql语句的where后面去掉试试看,,,,,,,,,,·
      

  7.   


    这句才是问题关键啊,rs指向的不是结果行,要先调用rs.next()才行
      

  8.   

    你的用户名,密码不存在呗,看看是不是把username和password传到方法里面去了
      

  9.   

    你还没写next呢  哪里会有值啊
      

  10.   

    DEBUG上面跑一跑  什么都出来了
      

  11.   

    在前面先把user.getUserName()的值打印出来,看获取的值是否正确,可能是乱码问题,这样找的话肯定是0
      

  12.   

    //验证用户是否存在
    public int userLogin(Users user) throws SQLException{
    String sql="select * from users where userName=? and password=?";
    getConnection();
    pstmt=conn.prepareStatement(sql);
    pstmt.setString(1, user.getUserName());
    pstmt.setString(2, user.getPassword());
    rs=pstmt.executeQuery();
    int number=0;
    while(rs.next()){
          number=1;
    }
    return number;
    如果number=1说明登陆正确,你要是想得到对象就在while循环中接受
    }
      

  13.   

    rs=pstmt.executeQuery();
    在他下边用while()循环一下数据库
    然后在判断一下用户名存不存在。
    如果存在返回true,不存在返回false。