Duvida como trabalhar com o java.sql.Date

Olá, a todos, eu já pesquisei bastante aqui para ver se achava a solução do problema, mas não encontrei, por isso preciso de uma ajuda, estou com problema para inserir data no campo data, estou usando Netbeans e banco de dados h2 embedded, por enquanto estou simulando os campos no código, nada de inserção no jTextField ainda. criei a tabela do banco de dados assim:

CREATE TABLE DESPESAS (
  ID_DESPESAS INT NOT NULL AUTO_INCREMENT,
  DESCRICAO VARCHAR(255) NOT NULL,
  VALOR DOUBLE NOT NULL,
  FORMA_PAGAMENTO VARCHAR(255) NOT NULL,
  TIPO VARCHAR(255) NOT NULL,
  DATA_DIA DATE NOT NULL,
  PRIMARY KEY(ID_DESPESAS) 
);

Criei a coluna DATA_DIA DATE NOT NULL, até tudo certo ai tenho a classe Despesas assim:

import java.sql.Date;
import java.util.Objects;

public class Despesas {
    
    String descricao;
    double valor;
    String formaPagamento;
    String tipo;
    Date dataDia;

Com seus Getters e setters.

Ai tenho a classe para testar a conexão e as tabelas:

    import br.com.invistafacil.dominio.ContaBanco;
    import br.com.invistafacil.dominio.Despesas;
    import br.com.invistafacil.dominio.Usuario;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    public class ConexaoDB {

        public Connection getConnection() {
            try {
                return DriverManager.getConnection("jdbc:h2:file:./repositorios/invistafacilDB", "sa", "");
            } catch (SQLException e) {
                // TODO: handle exception
                throw new RuntimeException(e);
            }
        }

        public void inserirDespesa(Despesas despesas) throws SQLException {

            Connection con = new ConexaoDB().getConnection();
        String sql = "insert into DESPESAS" + " (DESCRICAO,VALOR,FORMA_PAGAMENTO,TIPO,DATA_DIA)" + " values (?,?,?,?,?)";
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setString(1, despesas.getDescricao());
        stmt.setDouble(2, despesas.getValor());
        stmt.setString(3, despesas.getFormaPagamento());
        stmt.setString(4, despesas.getTipo());
        stmt.setDate(5, despesas.getDataDia());

        stmt.execute();
        stmt.close();

        System.out.println("Gravado no banco de dados com sucesso!");
    }

    public static void main(String[] args) throws SQLException {
        ConexaoDB conexaoDB = new ConexaoDB();

        Despesas despesas = new Despesas();

        despesas.setDescricao("Cinema Vigadores Guerra Infinita");
        despesas.setValor(40);
        despesas.setFormaPagamento("Dinheiro");
        despesas.setTipo("Lazer");
        despesas.setDataDia(5082118);
        

    conexaoDB.inserirDespesa(despesas);
}
}

É nessa linha despesas.setDataDia(5082118); que da problema e não consigo inserir um valor para testar, estou usando a importação import java.sql.Date; na classe despesas, alguém pode me ajudar por favor, agradeço.

Já tentou assim ?

despesas.setDataDia(new Date());

1 curtida

Opa testei aqui e deu certo sim inseri os números e foi! obrigado pela ajuda!