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 配列に対して新しい String を作成することはできます。

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

または、さらに良いこと:

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