Erro Inserir Data Java

Ola! Estou começando agora a programar em Java e estou com um problema para inserir um campo com data.

Minha conexão com o banco de dados esta assim:

public class ConexaoClientes {
ConexaoBD conex = new ConexaoBD();
ModeloClientes mod = new ModeloClientes();

public void Salvar(ModeloClientes mod)
{
    conex.conecta();
    try
        {
        PreparedStatement pst = conex.conexao.prepareStatement("Insert into tblClientes (nome_cliente,ativo_cliente,data_cliente) values(?,?,?)");

        pst.setString(1,mod.getNome_cliente());      
        pst.setString(2,mod.getAtivo_cliente());
        pst.setDate(3, new java.sql.Date(mod.getData_cliente().getTime()));
        pst.execute();
        JOptionPane.showMessageDialog(null, "Inserido com Sucesso!");
        }
    catch (SQLException ex)
        {
            JOptionPane.showMessageDialog(null, "Erro ao Inserir!/nErro/;"+ex);
        }
    
    conex.desconecta();
}

No botão do meu formulario esta assim:

if(txtNome.getText().equals("")){
JOptionPane.showMessageDialog(null, “Informe o nome do cliente”);
txtNome.grabFocus();
}
else{
mod.setNome_cliente(txtNome.getText());
mod.setAtivo_cliente((String) cboAtivo.getSelectedItem());
mod.setData_cliente(txtData.getDate());
control.Salvar(mod);
}

e da erro no mod.setData, não sei oque fazer!!

Seu campo de data não é do tipo Date?

Se for o caso, você não está passando uma String direto?
Você precisaria transformar a String em Date antes de passar o valor para o seu modelo!

Sem saber exatamente qual o erro que você teve fica dificil deduzir o que pode ser.

Oi Jonathan, bom dia, obrigado por responder.
como eu sou novo no java não sei se estou fazendo correto, no meu form eu adcionei um campo de texto para data, como eu insiro um campo do tipo data e como eu transformo a String em Date?

Qual é o erro que acontece exatamente? compartilha o stack trace do problema!

Qual o erro?
A variável txtData é de qual tipo?

a data esta assim
private Date data_cliente;

PreparedStatement pst = conex.conexao.prepareStatement(“Insert into tblClientes(nome_cliente, ativo_cliente, data_cliente) values(?,?,?)”);

        pst.setString(1,mod.getNome_cliente());      
        pst.setString(2,mod.getAtivo_cliente());
        pst.setDate(3, new java.sql.Date(mod.getData_cliente().getTime()));

esse é o erro que aparece
image

Certo, porém o seu field txtData retorna uma String e não um Date, correto?

Com isso, você precisa antes recuperar a String para depois convertê-la em Date!

Exemplo:

String stringDate = "22/06/2021";  
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(stringDate);

No seu código, algo mais ou menos assim:

String stringDate = txtData.getText();  
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(stringDate);
mod.setData_cliente(date);

Jonathan, colocando como vc me passou ele apresentou esse erro e pediu para circundar com try catch

Para a variável date, você precisa especificar o tipo dela igual no exemplo: Date date ....

Sobre o try/catch, ele se faz necessário pois o parse pode falhar e lançar uma exceção, neste caso você precisaria fazer a tratativa.

Jonathan, cara me desculpe, mas continua com erro, pior que sou totalmente leigo em java, estou aprendendo td agora, então me desculpe mesmo.

o código ficou assim:
String stringDate = txtData.getText();
try {
Date date = new SimpleDateFormat(“dd/MM/yyyy”).parse(stringDate);
} catch (ParseException ex) {
JOptionPane.showMessageDialog(null, “Erro ao inserir data”);
}
mod.setData_cliente(date);

mas apresenta esse erro

Tu importou o Date de qual pacote?

Tem que ser o do java.util.Date e não do java.sql.Date!

isso
image

Provavelmente está com conflito, pois você tem um import de java.sql.* que carrega tudo, inclusive o tipo Date.

Neste caso você precisaria deixar o caminho completo do objeto!

Exemplo:
java.util.Date date = …

Obrigado Jonathan, deu certo!!
Valeu a atenção