源码: 
try {
//System.out.print(""+name+"  "+password);

DbConnect dc=new DbConnect();
ct=dc.getConnect();

String sql="select userpassword  from users where username='"+name+"'";
ps=ct.prepareStatement(sql);
rs=ps.executeQuery();
System.out.println("sql语句: "+sql);

if(rs.next()) {
//用户名存在
String ps=rs.getString(1);

System.out.println("文本框传过来的密码: "+password);
System.out.println("数据库查询得到的密码: "+ps);

boolean b=password.equals(ps);
System.out.println("两个密码equals后的结果:"+b);


   if(b) {
   //密码匹配
   isUser=true; 
   }
  
  else isUser=false;

}  else {
//用户名不存在
 isUser=false;

}

} catch (Exception e) {

e.printStackTrace();
} finally {
closeConnection();
}


return isUser;
}
运行结果:sql语句: select userpassword  from users where username='xj'
文本框传过来的密码: xj
数据库查询得到的密码: xj                  
两个密码equals后的结果:false

解决方案 »

  1.   

    System.out.println("文本框传过来的密码: "+password.length());
    System.out.println("数据库查询得到的密码: "+ps.length());
      

  2.   

    这个9成是有空格的干扰,要不怎么可能是false呢,你把空格去掉,或者是半角和全角的原因。
      

  3.   

    空格。大小写。基本就是这2个问题了。BTW,你的密码不长把。
    你用password.trim().equalsIgnoreCase(ps) 试试
      

  4.   

    用trim去掉干扰空格符,再去判断equals
      

  5.   


    确实是空格  归根结底是userpassword在数据库里面存取的类型是char  粗心啊
      

  6.   

    用trim去掉干扰空格符,再用equals,保证可以。
      

  7.   

    此段文章从你上面copy下来的.“|”代表末尾
    文本框传过来的密码: xj|
    数据库查询得到的密码: xj   |
      

  8.   

    同意trim
    应该是空格的问题
      

  9.   

    char 定长类型,没有达到char长度会用空格来代替。你永远equals出来的是错的!
      

  10.   

    如果没猜错,lz存放的密码的字段类型是char,char的类型必须要trim后再equal
      

  11.   

    你数据库用了CHAR类型吧,所以取出来的数据有空格,建议用VARCHAR类型就没问题了
      

  12.   

    看看两个密码的hashcode()是不是一样,如果不一样,说明肯定不相等。
    如果不相等的话,可以通过下面方法确认:
    1.trim()下看看
    2.把密码转换为byte,把byte的acsii码输出来,看看是否相等。
      

  13.   

    估计你的数据库内还有空格 trim()
      

  14.   

    输出两个值,看是否一样!
    再或者就是用trim()去掉空格,试试吧!
      

  15.   

    可能是你从文本框中拿的是string的,数据库中刚刚拿出的是int的,没有转型。
    一点小意见,有误请指正啊,呵呵、
      

  16.   

    友情提示:最好不要把变量放在equals的前面。。
      

  17.   

    boolean b=password.equals(ps);
    这句话错了  它不应该跟结果比,而是应该跟结果中的密码比
    b.setString(2).equals(password);