我在一个修改页面里面用表单进行用户资料修改,在另外一个处理表单页面里面如下操作
  先得到密码 String password=(String)request.getParameter("password"); 
  然后连接数据库,再进行更新
 if(password!=null || password!=""){  //如果不想修改密码的话,password应该为空则不执update
        rs.updateString("PassWord",password);
    }
    rs.updateString("Name",realname);
    rs.updateString("Sex",sex);
    rs.updateString("Address",address);
    rs.updateString("Phone",telephone);
    rs.updateString("Post",post);
    rs.updateString("Email",email);
    rs.updateRow();
    con.close();
  如果我在修改页面里面进行对password赋新值的话,最后可以修改密码,数据库也更新了
  但是如果我不给password赋值的话,就是我不想修改密码,这个时候似乎还是会执行
  rs.updateString("PassWord",password);把我的密码给修改成null或者""了
  请高手看看我这里什么地方错了,不想修改的时候它总是把数据库里面的PassWord弄成空了
  顺便请教null与""的区别

解决方案 »

  1.   

    你可以在客户端用javascript控制用户输入修改的密码再提交到服务器,如果用户没有填写则不提交。那么你在服务器就不用做判断了,直接得到密码修改就行。至于null和""的区别,""不是一个空的值,它是空格,我知道的就这么多,还是看看别人怎么说~~
      

  2.   

    if(password!=null &&password!=""){  //如果不想修改密码的话,password应该为空则不执update
            rs.updateString("PassWord",password);
        }
    或者if(password!=null || password.length()>0){  //如果不想修改密码的话,password应该为空则不执update
            rs.updateString("PassWord",password);
        }
    这样就好了null 和""   一个是空对象,一个是空字符串
      

  3.   

    就是说password应该不是null并且不是空字符串我上面的
    if(password!=null || password.length()>0){  //如果不想修改密码的话,password应该为空则不执update
            rs.updateString("PassWord",password);
        }
    错了
    把||--->&&
      

  4.   

    嗯,一般是这样搞,用字符串长度来判断好些。
    我楼上的指出来了,是AND 不是OR
      

  5.   

    而且在前期页面未提交之前,JS就应该把这个给判断了。
    在JSP里用
    if(password!=null && password.length()>0)
    {更新操作}
    这样就可以了
      

  6.   

    谢谢各位,问题解决了,我现在改为下面这样的
    if(password==null || (password.trim()).length()==0){
        }
        else{
           rs.updateString("PassWord",password);
        }
      

  7.   

    lz将数据库uodate贴出来啊  我感觉应该是update的问题,楼主在给一条记录更新的时候肯定在对没更新的password传入了空值。可以适当在update语句种加入判断语句