Я пытался установить пароль, введенный в 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.
getPassword
возвращает массив char
по уважительной причине - чтобы предотвратить любой поиск String
из-за сложности стирания содержимого String
в памяти. Вместо этого я предлагаю солить пароль и сохранить хэш в базе данных.
getPassword()
возвращает char[]
- его нельзя просто отличить от java.lang.String
. Вы могли бы, однако, построить новый String для этого массива char:
dts.setPassword(new String(txtPassword.getPassword()));
Или, еще лучше:
dts.setPassword(String.valueOf(txtPassword.getPassword()));
new String
.