[Resolvido] Metodo Insert e Update não rodam caso meu JdateChooser esteja vazio

Fala galera, segue minha dúvida:

Tenho uma tela de cadastro onde o campo “Finalizacao” é uma Date no banco MySql e no meu Jframe tenho um componente JdateChooser para representá-lo, quero dar alternativa ao usuário em preencher este campo ou apenas deixá-lo em branco, quando preenche ele está funcionando perfeitamente, salva no banco tudo OK, mas se eu deixo o JdateChooser vazio ao clicar em salvar não acontece nada, ou seja, meu Insert ou Update não funciona. Obs.: No banco este campo NÃO é obrigatório (Aceita null).

Segue apenas os trechos de código que está atrelado a minha dúvida:

Pacote bean (Entidade):

public class Rdi {

    int RDI;
    Date Abertura;
    Date Finalizacao; //Aqui o Date que está dando problema
    String Status;
    Boolean Envio_999;
    Boolean Gera_NQ;
    String Claim;
    String Processo;
    String Gabarito;
    String BIN;
    String Material;
    int Quantidade;
    String Responsavel;
    String Setor;
    String Causa_Raiz;
    String Erro_Identificado;
    String Analise_Acao;
    Boolean Contagem_Saldo;
    Boolean Recontagem;
    Boolean Varredura_FGI;
    Boolean Auditoria_LT24;
    Boolean Varredura_RW_NCM;
    Boolean Varredura_Inbound;
    Boolean Auditoria_Entrada;
    Boolean Varredura_Agendamento;
    Boolean Auditoria_Delivery;
    Boolean Auditoria_Saida;
    Boolean Revezamento;

    //Método para exibir tudo que tem na classe
    @Override
    public String toString() {
        return "Rdi{" + "RDI=" + RDI + ", Abertura=" + Abertura + ", Finalizacao=" + Finalizacao + ", Status=" + Status + ", Envio_999=" + Envio_999 + ", Gera_NQ=" + Gera_NQ + ", Claim=" + Claim + ", Processo=" + Processo + ", Gabarito=" + Gabarito + ", BIN=" + BIN + ", Material=" + Material + ", Quantidade=" + Quantidade + ", Responsavel=" + Responsavel + ", Setor=" + Setor + ", Causa_Raiz=" + Causa_Raiz + ", Erro_Identificado=" + Erro_Identificado + ", Analise_Acao=" + Analise_Acao + ", Contagem_Saldo=" + Contagem_Saldo + ", Recontagem=" + Recontagem + ", Varredura_FGI=" + Varredura_FGI + ", Auditoria_LT24=" + Auditoria_LT24 + ", Varredura_RW_NCM=" + Varredura_RW_NCM + ", Varredura_Inbound=" + Varredura_Inbound + ", Auditoria_Entrada=" + Auditoria_Entrada + ", Varredura_Agendamento=" + Varredura_Agendamento + ", Auditoria_Delivery=" + Auditoria_Delivery + ", Auditoria_Saida=" + Auditoria_Saida + ", Revezamento=" + Revezamento + '}';
    }

    //Construtor Vazio
    public Rdi() {
    }

    //Contrutor que recebe parametros
    public Rdi(Date Abertura, Date Finalizacao, String Status, Boolean Envio_999, Boolean Gera_NQ, String Claim, String Processo, String Gabarito, String BIN, String Material, int Quantidade, String Responsavel, String Setor, String Causa_Raiz, String Erro_Identificado, String Analise_Acao, Boolean Contagem_Saldo, Boolean Recontagem, Boolean Varredura_FGI, Boolean Auditoria_LT24, Boolean Varredura_RW_NCM, Boolean Varredura_Inbound, Boolean Auditoria_Entrada, Boolean Varredura_Agendamento, Boolean Auditoria_Delivery, Boolean Auditoria_Saida, Boolean Revezamento) {
        //this.RDI = RDI;
        this.Abertura = Abertura;
        this.Finalizacao = Finalizacao;
        this.Status = Status;
        this.Envio_999 = Envio_999;
        this.Gera_NQ = Gera_NQ;
        this.Claim = Claim;
        this.Processo = Processo;
        this.Gabarito = Gabarito;
        this.BIN = BIN;
        this.Material = Material;
        this.Quantidade = Quantidade;
        this.Responsavel = Responsavel;
        this.Setor = Setor;
        this.Causa_Raiz = Causa_Raiz;
        this.Erro_Identificado = Erro_Identificado;
        this.Analise_Acao = Analise_Acao;
        this.Contagem_Saldo = Contagem_Saldo;
        this.Recontagem = Recontagem;
        this.Varredura_FGI = Varredura_FGI;
        this.Auditoria_LT24 = Auditoria_LT24;
        this.Varredura_RW_NCM = Varredura_RW_NCM;
        this.Varredura_Inbound = Varredura_Inbound;
        this.Auditoria_Entrada = Auditoria_Entrada;
        this.Varredura_Agendamento = Varredura_Agendamento;
        this.Auditoria_Delivery = Auditoria_Delivery;
        this.Auditoria_Saida = Auditoria_Saida;
        this.Revezamento = Revezamento;
    }

    //Get and Set
    public int getRDI() {
        return RDI;
    }

    public void setRDI(int RDI) {
        this.RDI = RDI;
    }

    public Date getAbertura() {
        return Abertura;
    }

    public void setAbertura(Date Abertura) {
        this.Abertura = Abertura;
    }

    public Date getFinalizacao() {
        return Finalizacao;
    }

    public void setFinalizacao(Date Finalizacao) {
        this.Finalizacao = Finalizacao;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String Status) {
        this.Status = Status;
    }

    public Boolean getEnvio_999() {
        return Envio_999;
    }

    public void setEnvio_999(Boolean Envio_999) {
        this.Envio_999 = Envio_999;
    }

    public Boolean getGera_NQ() {
        return Gera_NQ;
    }

    public void setGera_NQ(Boolean Gera_NQ) {
        this.Gera_NQ = Gera_NQ;
    }

    public String getClaim() {
        return Claim;
    }

    public void setClaim(String Claim) {
        this.Claim = Claim;
    }

    public String getProcesso() {
        return Processo;
    }

    public void setProcesso(String Processo) {
        this.Processo = Processo;
    }

    public String getGabarito() {
        return Gabarito;
    }

    public void setGabarito(String Gabarito) {
        this.Gabarito = Gabarito;
    }

    public String getBIN() {
        return BIN;
    }

    public void setBIN(String BIN) {
        this.BIN = BIN;
    }

    public String getMaterial() {
        return Material;
    }

    public void setMaterial(String Material) {
        this.Material = Material;
    }

    public int getQuantidade() {
        return Quantidade;
    }

    public void setQuantidade(int Quantidade) {
        this.Quantidade = Quantidade;
    }

    public String getResponsavel() {
        return Responsavel;
    }

    public void setResponsavel(String Responsavel) {
        this.Responsavel = Responsavel;
    }

    public String getSetor() {
        return Setor;
    }

    public void setSetor(String Setor) {
        this.Setor = Setor;
    }

    public String getCausa_Raiz() {
        return Causa_Raiz;
    }

    public void setCausa_Raiz(String Causa_Raiz) {
        this.Causa_Raiz = Causa_Raiz;
    }

    public String getErro_Identificado() {
        return Erro_Identificado;
    }

    public void setErro_Identificado(String Erro_Identificado) {
        this.Erro_Identificado = Erro_Identificado;
    }

    public String getAnalise_Acao() {
        return Analise_Acao;
    }

    public void setAnalise_Acao(String Analise_Acao) {
        this.Analise_Acao = Analise_Acao;
    }

    public Boolean getContagem_Saldo() {
        return Contagem_Saldo;
    }

    public void setContagem_Saldo(Boolean Contagem_Saldo) {
        this.Contagem_Saldo = Contagem_Saldo;
    }

    public Boolean getRecontagem() {
        return Recontagem;
    }

    public void setRecontagem(Boolean Recontagem) {
        this.Recontagem = Recontagem;
    }

    public Boolean getVarredura_FGI() {
        return Varredura_FGI;
    }

    public void setVarredura_FGI(Boolean Varredura_FGI) {
        this.Varredura_FGI = Varredura_FGI;
    }

    public Boolean getAuditoria_LT24() {
        return Auditoria_LT24;
    }

    public void setAuditoria_LT24(Boolean Auditoria_LT24) {
        this.Auditoria_LT24 = Auditoria_LT24;
    }

    public Boolean getVarredura_RW_NCM() {
        return Varredura_RW_NCM;
    }

    public void setVarredura_RW_NCM(Boolean Varredura_RW_NCM) {
        this.Varredura_RW_NCM = Varredura_RW_NCM;
    }

    public Boolean getVarredura_Inbound() {
        return Varredura_Inbound;
    }

    public void setVarredura_Inbound(Boolean Varredura_Inbound) {
        this.Varredura_Inbound = Varredura_Inbound;
    }

    public Boolean getAuditoria_Entrada() {
        return Auditoria_Entrada;
    }

    public void setAuditoria_Entrada(Boolean Auditoria_Entrada) {
        this.Auditoria_Entrada = Auditoria_Entrada;
    }

    public Boolean getVarredura_Agendamento() {
        return Varredura_Agendamento;
    }

    public void setVarredura_Agendamento(Boolean Varredura_Agendamento) {
        this.Varredura_Agendamento = Varredura_Agendamento;
    }

    public Boolean getAuditoria_Delivery() {
        return Auditoria_Delivery;
    }

    public void setAuditoria_Delivery(Boolean Auditoria_Delivery) {
        this.Auditoria_Delivery = Auditoria_Delivery;
    }

    public Boolean getAuditoria_Saida() {
        return Auditoria_Saida;
    }

    public void setAuditoria_Saida(Boolean Auditoria_Saida) {
        this.Auditoria_Saida = Auditoria_Saida;
    }

    public Boolean getRevezamento() {
        return Revezamento;
    }

    public void setRevezamento(Boolean Revezamento) {
        this.Revezamento = Revezamento;
    }
}

Pacote DAO (Responsável pelos métodos):

public class RdiDAO {

    //Método Inserir um registro na tabela Rdi(Insert - "C"RUD)
    public int inserir(Rdi rdi) {
        int ret = 0;
        String sql = "INSERT INTO rdi (Abertura, Finalizacao, Status, Envio_999, Gera_NQ, Claim, Processo, Gabarito, BIN, Material, Quantidade, Responsavel, Setor, Causa_Raiz, Erro_Identificado, Analise_Acao, Contagem_Saldo, Recontagem, Varredura_FGI, Auditoria_LT24, Varredura_RW_NCM, Varredura_Inbound, Auditoria_Entrada, Varredura_Agendamento, Auditoria_Delivery, Auditoria_Saida, Revezamento)"
                + "VALUES( "
                + "'" + rdi.getAbertura() + "', "
                + "'" + rdi.getFinalizacao() + "', " //Aqui onde está dando problema
                + "'" + rdi.getStatus() + "', "
                + "'" + Util.verdadeiroFalso(rdi.getEnvio_999()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getGera_NQ()) + "', "
                + "'" + rdi.getClaim() + "', "
                + "'" + rdi.getProcesso() + "', "
                + "'" + rdi.getGabarito() + "', "
                + "'" + rdi.getBIN() + "', "
                + "'" + rdi.getMaterial() + "', "
                + "'" + rdi.getQuantidade() + "', "
                + "'" + rdi.getResponsavel() + "', "
                + "'" + rdi.getSetor() + "', "
                + "'" + rdi.getCausa_Raiz() + "', "
                + "'" + rdi.getErro_Identificado() + "', "
                + "'" + rdi.getAnalise_Acao() + "', "
                + "'" + Util.verdadeiroFalso(rdi.getContagem_Saldo()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getRecontagem()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getVarredura_FGI()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getAuditoria_LT24()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getVarredura_RW_NCM()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getVarredura_Inbound()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getAuditoria_Entrada()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getVarredura_Agendamento()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getAuditoria_Delivery()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getAuditoria_Saida()) + "', "
                + "'" + Util.verdadeiroFalso(rdi.getRevezamento()) + "' "
                + ")";

        com.mysql.jdbc.Connection conn = ConnectionMySQL.getConnection();
        Statement stmt = null;

        try {
            stmt = conn.createStatement();
            ret = stmt.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ConnectionMySQL.close(conn, stmt);
        }
        return ret;
    }

//Metodo para Alterar dados de um registro da tabela Rdi (Update - CR"U"D)
    public int alterar(Rdi rdi) {
        int ret = 0;
        String sql = "UPDATE rdi SET "
                + "Abertura='" + rdi.getAbertura() + "', "
                + "Finalizacao='" + rdi.getFinalizacao() + "', " //Aqui onde está dando problema
                + "Status='" + rdi.getStatus() + "', "
                + "Envio_999='" + Util.verdadeiroFalso(rdi.getEnvio_999()) + "', "
                + "Gera_NQ='" + Util.verdadeiroFalso(rdi.getGera_NQ()) + "', "
                + "Claim='" + rdi.getClaim() + "', "
                + "Processo='" + rdi.getProcesso() + "', "
                + "Gabarito='" + rdi.getGabarito() + "', "
                + "BIN='" + rdi.getBIN() + "', "
                + "Material='" + rdi.getMaterial() + "', "
                + "Quantidade='" + rdi.getQuantidade() + "', "
                + "Responsavel='" + rdi.getResponsavel() + "', "
                + "Setor='" + rdi.getSetor() + "', "
                + "Causa_Raiz='" + rdi.getCausa_Raiz() + "', "
                + "Erro_Identificado='" + rdi.getErro_Identificado() + "', "
                + "Analise_Acao='" + rdi.getAnalise_Acao() + "', "
                + "Contagem_Saldo='" + Util.verdadeiroFalso(rdi.getContagem_Saldo()) + "', "
                + "Recontagem='" + Util.verdadeiroFalso(rdi.getRecontagem()) + "', "
                + "Varredura_FGI='" + Util.verdadeiroFalso(rdi.getVarredura_FGI()) + "', "
                + "Auditoria_LT24='" + Util.verdadeiroFalso(rdi.getAuditoria_LT24()) + "', "
                + "Varredura_RW_NCM='" + Util.verdadeiroFalso(rdi.getVarredura_RW_NCM()) + "', "
                + "Varredura_Inbound='" + Util.verdadeiroFalso(rdi.getVarredura_Inbound()) + "', "
                + "Auditoria_Entrada='" + Util.verdadeiroFalso(rdi.getAuditoria_Entrada()) + "', "
                + "Varredura_Agendamento='" + Util.verdadeiroFalso(rdi.getVarredura_Agendamento()) + "', "
                + "Auditoria_Delivery='" + Util.verdadeiroFalso(rdi.getAuditoria_Delivery()) + "', "
                + "Auditoria_Saida='" + Util.verdadeiroFalso(rdi.getAuditoria_Saida()) + "', "
                + "Revezamento='" + Util.verdadeiroFalso(rdi.getRevezamento()) + "' "
                + "WHERE RDI = " + rdi.getRDI();

        com.mysql.jdbc.Connection conn = ConnectionMySQL.getConnection();
        Statement stmt = null;

        try {
            stmt = conn.createStatement();
            ret = stmt.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ConnectionMySQL.close(conn, stmt);
        }
        return ret;
    }

Pacote view (Tela onde contém este componente):

RdiDAO rdiDAO;
    private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
//Botão Salvar
    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (txtRDI.getText().equals("")) {
            Rdi rdi = new Rdi();
            rdi.setAbertura(Util.stringToDate(Util.dateToString(txtAbertura.getDate())));
            rdi.setFinalizacao(Util.stringToDate(Util.dateToString(txtFinalizacao.getDate()))); //Aqui onde está dando problema (Quero poder deixar vazio)
            rdi.setStatus(txtStatus.getSelectedItem().toString());
            rdi.setEnvio_999(Util.flag(txtEnvio_999));
            rdi.setGera_NQ(Util.flag(txtGera_NQ));
            rdi.setClaim(txtClaim.getSelectedItem().toString());
            rdi.setProcesso(txtProcesso.getSelectedItem().toString());
            rdi.setGabarito(txtGabarito.getText());
            rdi.setBIN(txtBIN.getText());
            rdi.setMaterial(txtMaterial.getText());
            rdi.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
            rdi.setResponsavel(txtResponsavel.getSelectedItem().toString());
            rdi.setSetor(txtSetor.getSelectedItem().toString());
            rdi.setCausa_Raiz(txtCausa_Raiz.getSelectedItem().toString());
            rdi.setErro_Identificado(txtErro_Identificado.getSelectedItem().toString());
            rdi.setAnalise_Acao(txtAnalise_Acao.getText());
            rdi.setContagem_Saldo(Util.flag(txtContagem_Saldo));
            rdi.setRecontagem(Util.flag(txtRecontagem));
            rdi.setVarredura_FGI(Util.flag(txtVarredura_FGI));
            rdi.setAuditoria_LT24(Util.flag(txtAuditoria_LT24));
            rdi.setVarredura_RW_NCM(Util.flag(txtVarredura_RW_NCM));
            rdi.setVarredura_Inbound(Util.flag(txtVarredura_Inbound));
            rdi.setAuditoria_Entrada(Util.flag(txtAuditoria_Entrada));
            rdi.setVarredura_Agendamento(Util.flag(txtVarredura_Agendamento));
            rdi.setAuditoria_Delivery(Util.flag(txtAuditoria_Delivery));
            rdi.setAuditoria_Saida(Util.flag(txtAuditoria_Saida));
            rdi.setRevezamento(Util.flag(txtRevezamento));

            RdiDAO rdiDAO = new RdiDAO();
            int ret = rdiDAO.inserir(rdi);            
            if (ret > 0) {
                JOptionPane.showMessageDialog(this, "Registro Salvo!");
                carregaRdi();
            }else
            JOptionPane.showMessageDialog(this, "Erro");

        } else {
            Rdi rdi = new Rdi();
            rdi.setRDI(Integer.parseInt(txtRDI.getText()));
            rdi.setAbertura(Util.stringToDate(Util.dateToString(txtAbertura.getDate())));
            rdi.setFinalizacao(Util.stringToDate(Util.dateToString(txtFinalizacao.getDate())));
            rdi.setStatus(txtStatus.getSelectedItem().toString());
            rdi.setEnvio_999(Util.flag(txtEnvio_999));
            rdi.setGera_NQ(Util.flag(txtGera_NQ));
            rdi.setClaim(txtClaim.getSelectedItem().toString());
            rdi.setProcesso(txtProcesso.getSelectedItem().toString());
            rdi.setGabarito(txtGabarito.getText());
            rdi.setBIN(txtBIN.getText());
            rdi.setMaterial(txtMaterial.getText());
            rdi.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
            rdi.setResponsavel(txtResponsavel.getSelectedItem().toString());
            rdi.setSetor(txtSetor.getSelectedItem().toString());
            rdi.setCausa_Raiz(txtCausa_Raiz.getSelectedItem().toString());
            rdi.setErro_Identificado(txtErro_Identificado.getSelectedItem().toString());
            rdi.setAnalise_Acao(txtAnalise_Acao.getText());
            rdi.setContagem_Saldo(Util.flag(txtContagem_Saldo));
            rdi.setRecontagem(Util.flag(txtRecontagem));
            rdi.setVarredura_FGI(Util.flag(txtVarredura_FGI));
            rdi.setAuditoria_LT24(Util.flag(txtAuditoria_LT24));
            rdi.setVarredura_RW_NCM(Util.flag(txtVarredura_RW_NCM));
            rdi.setVarredura_Inbound(Util.flag(txtVarredura_Inbound));
            rdi.setAuditoria_Entrada(Util.flag(txtAuditoria_Entrada));
            rdi.setVarredura_Agendamento(Util.flag(txtVarredura_Agendamento));
            rdi.setAuditoria_Delivery(Util.flag(txtAuditoria_Delivery));
            rdi.setAuditoria_Saida(Util.flag(txtAuditoria_Saida));
            rdi.setRevezamento(Util.flag(txtRevezamento));

            RdiDAO rdiDAO = new RdiDAO();
            int ret = rdiDAO.alterar(rdi);
            
            if (ret > 0) {
                JOptionPane.showMessageDialog(this, "Registro Salvo!");
                carregaRdi();
            }else
            JOptionPane.showMessageDialog(this, "Erro!");
        }
    }                        

Pacote Util (Metodos uteis)

//Metodo para transformar String em Data
    public static Date stringToDate(String dataStr) {
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date data = null;
        try {
            data = new Date(format.parse(dataStr).getTime());
        } catch (ParseException ex) {
            Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
        }
        return data;
    }

//Metodo para transformar Data em String para poder jogar  xx/xx/xxxx
    public static String dateToString(java.util.Date data) {
        String dataFormatada = new SimpleDateFormat("dd/MM/yyyy").format(data);
        return dataFormatada;
    }

Cara, não sei se é o mesmo caso q ocorreu comigo, tive esse problema com um campo bigint, nesse caso tive q colocar um if verificando se o campo estava preenchido e em caso negativo um "setNull’, mas nesse caso é melhor usar PreparedStatement:

// Este é um exemplo simples, não sei se é a melhor maneira mas foi o q encontrei p/ resolver na época
public void inserirEndereco(Connection con, Cobaia c) throws SQLException, Exception {
  PreparedStatement ps;
  ResultSet rs;

  ps = con.prepareStatement(" INSERT INTO teste (campoTeste) VALUES(?) ");

  // Verifica se o campo é nulo e insere 'NULL' com o código correspondente
  if (c.getAlgumaCoisa != null) {
    ps.setLong(1, c.getAlgumaCoisa);
  } else {
    ps.setNull(7,  java.sql.Types.BIGINT);
  }
  
  ps.executeUpdate();
  ps.close();
}

fabiocortolan, muito obrigado pela ajuda, seu trecho de código me ajudou muito.

Segue como consegui resolver:

Para buscar no MySql e trazer para o Jtable criei um método na camada Util que transforma Date em String caso exista e caso seja null retorna null:

//Metodo para transformar Data xxxx-xx-xx em String para poder jogar no JformatedTextField xx/xx/xxxx
    public static String dateToString(java.util.Date data) {
        if(data != null){
        String dataFormatada = new SimpleDateFormat("dd/MM/yyyy").format(data);
        return dataFormatada;
        }else{
            return null;
        }
    }

Para os métodos Inserir e Update Camada DAO utilizei a ajuda do fabiocortolan:

String sql = "INSERT INTO rdi "
                + "(Abertura, Finalizacao, Status, Envio_999, Gera_NQ, Claim, Processo, Gabarito, "
                + "BIN, Material, Quantidade, Responsavel, Setor, Causa_Raiz, Erro_Identificado, Analise_Acao, Contagem_Saldo, "
                + "Recontagem, Varredura_FGI, Auditoria_LT24, Varredura_RW_NCM, Varredura_Inbound, Auditoria_Entrada, "
                + "Varredura_Agendamento, Auditoria_Delivery, Auditoria_Saida, Revezamento)"
                + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

        com.mysql.jdbc.Connection conn = ConnectionMySQL.getConnection();

        try {
            PreparedStatement pstm = conn.prepareStatement(sql);

            pstm.setDate(1, new Date(rdi.getAbertura().getTime()));

            if (rdi.getFinalizacao() != null) { //Se não fou null
                pstm.setDate(2, new Date(rdi.getFinalizacao().getTime())); //Faz a inserção
            } else {
                pstm.setNull(2, java.sql.Types.DATE); //Senão insere null
            }

            pstm.setString(3, rdi.getStatus());
//          Continua..........
//          Continua..........

E por fim na camada view (Formulário) no botão salvar:

//         ......               

            Rdi rdi = new Rdi();
            rdi.setAbertura(txtAbertura.getDate());       //Pega dados do campo e salva no MySql
            rdi.setFinalizacao(txtFinalizacao.getDate()); //Pega dados do campo e salva no MySql

//          Continua..........
//          Continua..........

E se for um UPDATE …

Posso usar o IF da mesma forma ?

Eu tentei fazendo assim, mas aparentemente não deu certo.

Acontece que quando eu chamo minha tela para cadastrar/alterar dados de um usuário, o primeiro campo tem uma action focus lost e quando perde foco ele faz um select no banco varrendo pra ver se o usuário já existe, se existir ele mostra todos os dados cadastrados até o momento.

a partir daí, quando eu tento alterar a data no jDatechooser, não acontece nada. Não consigo nem alterar a data na real.
E se eu digitar a data e clicar no botão ‘update’ ele diz que não há parametro setado para aquele campo.

Alguém pode me ajudar?

E se for um UPDATE …

Posso usar o IF da mesma forma ?

Eu tentei fazendo assim, mas aparentemente não deu certo.

Acontece que quando eu chamo minha tela para cadastrar/alterar dados de um usuário, o primeiro campo tem uma action focus lost e quando perde foco ele faz um select no banco varrendo pra ver se o usuário já existe, se existir ele mostra todos os dados cadastrados até o momento.

a partir daí, quando eu tento alterar a data no jDatechooser, não acontece nada. Não consigo nem alterar a data na real.
E se eu digitar a data e clicar no botão ‘update’ ele diz que não há parametro setado para aquele campo.

Alguém pode me ajudar?