数据库中的数据类型为varchar 50的大小    
        String passwordSQL[]=new String[1];
        char passwordTemp1[]=new char[1];
        char passwordTemp2[]=new char[1];
        char passwordTemp3[]=new char[1];
        String passwordOld,passwordNew1,passwordNew2;
        passwordTemp1=jPasswordFieldOldPassword.getPassword();
        passwordOld=new String(passwordTemp1);
        passwordTemp2=jPasswordFieldNewPassword1.getPassword();
        passwordNew1=new String(passwordTemp2);
        passwordTemp3=jPasswordFieldNewPassword2.getPassword();
        passwordNew2=new String(passwordTemp3);
        if(passwordOld.equals("")){
            JOptionPane.showMessageDialog(this,"请输入旧密码","错误",JOptionPane.ERROR_MESSAGE);
        }else if(passwordNew1.equals("")){
            JOptionPane.showMessageDialog(this,"请输入新密码","错误",JOptionPane.ERROR_MESSAGE);
        }else if(passwordNew2.equals("")){
            JOptionPane.showMessageDialog(this,"请输入确认密码","错误",JOptionPane.ERROR_MESSAGE);
        }else if((passwordNew1.equals(passwordNew2)==false)|(passwordNew1.length()<6)){
            JOptionPane.showMessageDialog(this,"两次输入的新密码不一致或密码不足六位\n请重新输入","错误",JOptionPane.ERROR_MESSAGE);
        }else{
            try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }catch(ClassNotFoundException ce){
            System.out.println(ce);
        }
        try{
            Connection con=DriverManager.getConnection("jdbc:odbc:assetManage");
            String amendUser=manageFrame.amendUserTemp;
            Statement s=con.createStatement();
            ResultSet rs=s.executeQuery("select password from userId where userId='"+amendUser+"'");
            while(rs.next()){
                passwordSQL[0]=rs.getString(1);               
            }
            if(passwordOld.equals(passwordSQL[0])==false){
                JOptionPane.showMessageDialog(this,"旧密码输入错误,请重新输入","错误",JOptionPane.ERROR_MESSAGE);
            }else{
                PreparedStatement pstmt = con.prepareStatement(
                        "update userId set password=? where userId=?");
                pstmt.setString(1, passwordNew1);
                pstmt.setString(2, amendUser);
                pstmt.executeUpdate();
                JOptionPane.showMessageDialog(this, "密码修改成功", "成功",
                                              JOptionPane.INFORMATION_MESSAGE);
                pstmt.close();
                rs.close();
                con.close();
            }
        }catch(SQLException se){
            System.out.println(se);
        }

解决方案 »

  1.   

    要是直接在查询分析器里面执行上面的sql语句就不会出现空格的东西(就是当你点刚更新完的数据,光标应该停在最后一个字母的后面,而不是出现在空格之后)
      

  2.   

    String passwordSQL[]=new String[1]; 
    char passwordTemp1[]=new char[1]; 
    char passwordTemp2[]=new char[1]; 
    char passwordTemp3[]=new char[1]; 
    为什么要按上面这样定义呢?
    用String passwordSQL, passwordOld,passwordNew1,passwordNew2,passwordNew2;不好吗?
    得到数据为:
    passwordOld=jPasswordFieldOldPassword.getPassword(); 
    ......passwordSQL=rs.getString(1);
    ......
      

  3.   

    对了jPasswordFieldOldPassword是JPasswordField的对象吗?如果是的话,得到数据改为:
    passwordOld=jPasswordFieldOldPassword.getText(); 
    其它同理