1

我试图设置在 JPasswordField 中输入的密码,但出现了这个错误:

"Incompatible types: char[] cannot be converted to String"

            dts.setSalary(Double.parseDouble(txtSalary.getText()));
            selected=chgAccess.getSelectedIndex();
            dts.setAccess_number((String)chgAccess.getItemAt(selected));
            dts.setLogin(txtLogin.getText());
            //HERE
            dts.setPassword((String)txtPassword.getPassword());

我该如何解决?

额外的问题:那么它应该在我的数据库中作为 VARCHAR 类型,它会工作吗?我的意思是,我在数据库中为文本而不是密码创建了空间;我没有在 MySQL 中找到数据类型密码。

4

2 回答 2

4

getPasswordchar有一个很好的理由返回一个数组 - 以防止String由于难以擦除String内存中的内容而导致的任何查找。相反,我建议对密码进行加盐并将哈希存储在数据库中。

于 2014-11-22T17:10:17.743 回答
2

getPassword()返回 a char[]- 它不能简单地转换为 a java.lang.String。但是,您可以为此 char 数组构造一个新字符串:

dts.setPassword(new String(txtPassword.getPassword()));

或者,更好的是:

dts.setPassword(String.valueOf(txtPassword.getPassword()));
于 2014-11-22T17:01:19.830 回答