<%
    if(rs.next()){ 
        pwd1 = rs.getString("password");
        out.println(pwd1);
        out.println(pwd2);
            if(pwd1.equals(pwd2)){ 
                out.println("deng lu cheng gong!"); 
             }else{ 
                out.println("mi ma cuo wu!"); 
             } 
    } 
    else{ 
         out.println("not find the user!"); 
       } 
}%>这是一段判断用户密码的代码,无论在用户登录界面输入什么,总是提示“mi ma cuo wu”这句话,也就是说
 
     if(pwd1.equals(pwd2)){ 
                out.println("deng lu cheng gong!"); 这句根本就不执行判断,我在这句话前加了两个输出语句,这两个值可以正确的输出,可是就是不进行比较。求高手指点,
跪谢了 !    

解决方案 »

  1.   

    你应该打印pwd1.equals(pwd2)看看,估计不是不执行,而是判断为false,另外pwd1和pwd2打印出的值应该贴出来,这里看不到pwd2的值是怎么得到的啊
      

  2.   

    应该是pwd1的末尾有空格。从数据库取出来的string,一般位数不到都会补空格。
    最好是你用
     if(pwd1!=null&&(pwd1.trim()).equals(pwd2)){ 
      

  3.   

    <%   String action=request.getParameter("action");     if("login".equals(action)){ 
         //取出用户输入的用户名和密码;
          String name2 = request.getParameter("username");
      String pwd2 = request.getParameter("password");
      //out.println(pwd2);
      //String name1 = "";
      String pwd1 = "";

    %><%  
        //连接数据库;
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=abc","sa","sa");
    Statement stmt=conn.createStatement();
        
    //查询数据库;

    String sql="select username,password from userlogin where username='"+name2+"'"; 
        ResultSet rs=stmt.executeQuery(sql); 

    %>
    <%
        if(rs.next()){ 
            pwd1 = rs.getString("password");
    out.println(pwd1);
            out.println(pwd2);
                if(pwd1.equals(pwd2)){ 
                    out.println("deng lu cheng gong!"); 
                 }else{ 
                    out.println("mi ma cuo wu!"); 
                 } 
        } 
        else{ 
             out.println("not find the user!"); 
           } 
    }%>
      

  4.   

    ...
    用while(rs.next())吧,
    别光判断第一条啊。。
      

  5.   

    名字可以正确的判断,就是密码不能正确判断,我在
    if(pwd1.equals(pwd2)){ 
                    out.println("deng lu cheng gong!"); 前面加的两条输出语句中的数值也可以正确的输出,就是上面这句话则怎么也不执行!
      

  6.   

    输出 pwd1.equals(pwd2) 的值看看是不是为true
      

  7.   

    请分别输出pwd1.length()和pwd2.length()看看是多少
      

  8.   

    试试看username你输入个数据库里有的名字,然后密码随便打几个字母,看看这两句
    out.println(pwd1);
    out.println(pwd2); 
    打印出的结果,如果没问题,那应该是5楼说的问题,要是不正确就是从数据库读数据的问题
      

  9.   

    out.println(pwd1.equals(pwd2));
     或者判断pwd1和pwd2的长度~~~~
    程序不会出错~~的
      

  10.   

    你先去掉pwd1,pwd2前后的空格在比看看。如果你的数据库是char类型这个他会自动补空格的
    先去掉2端空格试试看 .trim()
      

  11.   


    if语句执行了,但只执行了第一条,第一条不对就返回false了。。