Boa noite Galera,
Sou novato em Java e estou tentando criar um pequena aplicação Java em Swing, porem tenho tido muita dificuldade ao tentar gravar o campo referente a data, estou trabalhar com o LocalDate porem estou apanhando bastante.
Gostaria se possível de pedir a ajudar dos colegas para sanar essa dúvida, segue abaixo o meu código para um maior entendimento do que preciso.
Tenho uma classe Conta
`
public class Conta {
private int id;
private TipoConta tipoConta;
private int pessoaId;
private double valor;
private LocalDate dataVencimento;
// Getters and setters
`
No meu formulário eu tenho o seguinte código, que é quando o usuário clicará no botão “Salvar”.
`
if(cbPessoa.equals("") || cbTipoConta.equals("") || jformattedValor.getText().equals("") || jformattedVencimento.equals("")) {
JOptionPane.showMessageDialog(null, "Todos os campos deverão ser devidamente preenchidos para que uma conta seja cadastrada");
}
else {
try {
DateTimeFormatter formatador = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
int pessoaId = cbPessoa3.getSelectedIndex();
TipoConta tp = (TipoConta) cbTipoConta.getSelectedItem();
double valor = Double.parseDouble(jformattedValor3.getText().replace("R$","").replaceAll(",", ""));
LocalDate data = LocalDate.parse(jformattedVencimento3.getText().replaceAll("/", ""), formatador);
c.setPessoaId(pessoaId);
c.setTipoContaId(tp);
c.setValor(valor);
c.setDataVencimento(data);
ContaDao dao = new ContaDao();
dao.Salvar(c);
}
catch(NumberFormatException | DateTimeParseException erro) {
JOptionPane.showMessageDialog(null, "Erro\n" + erro);
}
catch (SQLException ex) {
Logger.getLogger(FormContas.class.getName()).log(Level.SEVERE, null, ex);
}
}
`
Minha DAO para salvar no banco
`
public void Salvar(Conta c) {
String sql = "insert into conta (tipoconta, pessoaId, valor, dataVencimento) VALUES (?,?,?,?)";
try (PreparedStatement stmt = connection.prepareStatement(sql))
{
stmt.setString(1,c.getTipoConta().getDescricao());
stmt.setInt(2,c.getPessoaId());
stmt.setDouble(3,c.getValor());
stmt.setDate(4,java.sql.Date.valueOf(c.getDataVencimento()));
stmt.execute();
stmt.close();
JOptionPane.showMessageDialog(null,"Cadastro de conta realizado com sucesso");
connection.close();
}
catch(SQLException ex) {
JOptionPane.showMessageDialog(null,"Não foi possível cadastrar a conta no banco de dados\n" + ex);
}
}
`
O erro que ocorre é sempre quando eu no botão “Salvar” a conta cadastrada, caindo na exceção criada do tipo DateTimeParseException e retornando o seguinte "Text 01-03-2016 (que é a data que eu digitei) could not be parsed at index 0.
Desde já fico grato com qualquer auxílio.