Boa tarde,
Estou fazendo um exercicio que é baseado em um cadastro basico , mas estou tendo problemas para converter String para Date.
Segue um trecho do código.
Este é parte do UsuarioUI.java
System.out.println("Incluir Usuario");
System.out.println("=============");
System.out.print("Digite o nome : ");
usuarioDTO.setNome(Keyboard.readString());
System.out.print("Digite a data de nascimento : ");
usuarioDTO.setDataNascimento(Keyboard.readString());
System.out.print("Digite o salario : ");
usuarioDTO.setSalario(Keyboard.readDouble());
System.out.print("Digite o sexo : ");
usuarioDTO.setSexo(Keyboard.readInt());
System.out.print("Esta Ativo ? S ou N : ");
usuarioDTO.setAtivo(Keyboard.readChar());
System.out.print("Digite o cargo : ");
usuarioDTO.setCargoDTO(Keyboard.readString());
usuarioDAO.incluir( usuarioDTO );
este é parte do UsuarioDTO.java
public Date getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Date dataNascimento) {
this.dataNascimento = dataNascimento;
}
este é parte do UsuarioDAO.java
public void incluir(UsuarioDTO usuarioDTO) throws SQLException {
String sql = "insert into usuario ( usuario_id, nome, dataNascimento, salario, sexo, ativo, cargo_id) values (null,?,?,?,?,?,?)";
PreparedStatement pstmt = database.getConnection().prepareStatement(sql);
pstmt.setString(1, usuarioDTO.getNome());
//pstmt.setDate(2, new java.sql.Date(usuarioDTO.getDataNascimento().getTime()));
pstmt.setDate(2, Utilitario.convertDate()usuarioDTO.getDataNascimento());
pstmt.setDouble(3, usuarioDTO.getSalario());
pstmt.setInt(4, usuarioDTO.getSexo());
pstmt.setString(5, ""+usuarioDTO.getAtivo());
pstmt.setInt(6, usuarioDTO.getCargoDTO().getCargo_id());
pstmt.executeUpdate();
}
e este é parte do utilitario onde estão os metodos de conversão
public Date converte(String dataNasc) throws ParseException{
DateFormat forma = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date data = new java.sql.Date(forma.parse(dataNasc).getTime());
return data;
}
public static String convertDate(Date date, String format) {
if(date != null) {
SimpleDateFormat sdf = format != null ? new SimpleDateFormat(format) : new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
return sdf.format(date);
} else {
return "";
}
}
/**
* Converte um string em uma data
* @param String - string com uma data válida
* @param String - formato da data na string
* @return Date - data
*/
public static Date convertDate(String date, String format)
throws ParseException {
if(date != null) {
SimpleDateFormat sdf = format != null ? new SimpleDateFormat(format) : new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
return sdf.parse(date);
} else {
return null;
}
}
Pois bem na linha usuarioDTO.setDataNascimento(Keyboard.readString()); no Usuarioui.java esta dando o seguinte erro:
method setDataNascimento in class br.faetec.cadastro.model.dto.UsuarioDTO cannot be applied to given types;
required: java.util.Date
found: java.lang.String
reason: actual argument java.lang.String cannot be converted to java.util.Date by method invocation conversion
Se eu mudar o getDataNacimento do UsuarioDTO.java para String ai da erro no UsuarioDAO.java , será que eu estou esquecendo de algum detalhe ?
Sou iniciante em java , agradeço deswde já a atenção de vocês.
Abraço