我试图设置在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中找不到数据类型密码。
答案 0 :(得分:3)
getPassword
返回char
数组是有充分理由的 - 由于在内存中删除String
内容有困难,因此无法查找String
。相反,我建议salting the password并将哈希值存储在数据库中。
答案 1 :(得分:1)
getPassword()
会返回char[]
- 它不能简单地转换为java.lang.String
。但是,您可以为此char数组构造一个新的String:
dts.setPassword(new String(txtPassword.getPassword()));
或者,更好的是:
dts.setPassword(String.valueOf(txtPassword.getPassword()));