Data vazia nos comandos INSERT e UPDATE

No aplicativo Java que estou desenvolvendo estou com problema com datas, quando gravo uma data vazia o programa acusa erro. Não sei porque. Veja o trecho de código que faz o INSERT:

    public int salvarCadForProdutoDAO(ModelCadForProduto pModelCadForProduto){
        try {
            this.conectar();
            System.out.println("Id produto: " + pModelCadForProduto.getId_produto());
            //if(pModelCadForProduto.getData_compra().equals("")) 
            //    pModelCadForProduto.setData_compra(null);
            //if(pModelCadForProduto.getData_cadastro().equals(""))
            //    pModelCadForProduto.setData_cadastro(null);
            return this.insertSQL(
                "INSERT INTO fornec_produto ("
                    + "id_produto,"
                    + "id_fornecedor,"
                    + "preco,"
                    + "data_compra,"
                    + "data_cadastro"
                + ") VALUES ("
                    + "'" + pModelCadForProduto.getId_produto() + "',"
                    + "'" + pModelCadForProduto.getId_fornecedor() + "',"
                    + "'" + pModelCadForProduto.getPreco() + "',"
                    + "'" + pModelCadForProduto.getData_compra() + "', "
                    + "'" + pModelCadForProduto.getData_cadastro() +"'"
                + ");"
            );
        }catch(Exception e){
            e.printStackTrace();
            return 0;
        }finally{
            this.fecharConexao();
        }
    }

Pense em uma data em branco, sempre dá erro nas colunas data_compra e data_cadastro.
O que deve ser?

Atenciosamente,
Ronaldo

Aprenda como ‘Depurar’ (debug) o código e aí vocë descubrirá o que está dentro dessas variáveis quando você executa o programa e com isso irá encontrar onde está o erro.

Essas variáveis estão vazias por que não foi digitado nada na hora do cadastro. Esse é o valor correto delas mas dá erro INSERT de data vazia desta forma como está. Eu não sei, como poderia fazer?

Acho que entendi.
A primeira coisa que devemos fazer quando submetem um formulário eh validar os dados.
Na validação voce vai conferir se está tudo certo, e caso não esteja, você mostra uma mensagem para o usuário informando o campo que ele precisa corrigir. Enquanto o usuário não informar dados válidos, você não tenta salvá-los.

1 curtida

Pare de concatenar valores diretamente na query, acho que já te falaram isso antes.
Utilize PreparedStatement e sete os parâmetros corretamente de acordo com o seu tipo de dado.
Não utilize String pra tudo, se tem uma coluna do tipo DATE, você vai salvar um objeto do tipo java.sql.Date e não String.

1 curtida