2014-11-22 7 views
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에서 데이터 유형 암호를 찾지 못했습니다.

답변

1

getPassword()char[]을 반환합니다. 단순히 java.lang.String으로 캐스팅 할 수 없습니다. 당신은, 그러나,이 문자 배열에 대한 새로운 문자열을 만들 수 있습니다 :

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

을 또는 더 나은 아직 :

dts.setPassword(String.valueOf(txtPassword.getPassword())); 
+0

거의 항상 [String.valueOf] (https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#valueOf-char:A-)를 호출하는 것이 좋습니다. 새로운 문자열'. – VGR

+0

@VGR 좋은 지적 - 그에 따라 내 대답을 편집했습니다. – Mureinik

3

getPassword이 좋은 이유에 대한 char 배열을 반환 - String의 조회를 방지하기 위해 String 내용을 메모리에 저장하는 데 어려움이 있습니다. 대신 salting the password을 제안하고 해시를 데이터베이스에 저장하십시오.