символ [] не может быть преобразован в строку

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.

Теги:
string
char
jpasswordfield

2 ответа

3

getPassword возвращает массив char по уважительной причине - чтобы предотвратить любой поиск String из-за сложности стирания содержимого String в памяти. Вместо этого я предлагаю солить пароль и сохранить хэш в базе данных.

1

getPassword() возвращает char[] - его нельзя просто отличить от java.lang.String. Вы могли бы, однако, построить новый String для этого массива char:

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

Или, еще лучше:

dts.setPassword(String.valueOf(txtPassword.getPassword()));
  • 0
    Почти всегда лучше вызывать String.valueOf, чем new String .
  • 0
    @VGR хороший момент - соответственно отредактировал мой ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню