Erro ao editar cadastrado com imagem

2 respostas
D

Senhores,

Boa noite!!
Sou novo no setor de programação por este motivo entrei neste site para solicitar auxilio.
Estou desenvolvendo um sistema de cadastro. Minha duvida e em relação ao tentar editar o cadastro. Quando insiro as informações para cadastro e foto, salva o cadastro sem problema.
O erro ocorre no momento em que tento editar o cadastro.
Apresenta mensagem image==null. Fiz varias pesquisa, porem, não identifiquei uma solução.

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {

try {
        if (validarCampos()) {
            if (preencherObjeto()) {
                //Salvar no Banco
                SistemaData DAO = new SistemaData();
                        if (DAO.incluir(obj)) {
                        JOptionPane.showMessageDialog(this, "Registro salvo");
                        limparCampos();
                        jtSigla.setEditable(true);
                        jtDescricao.setEditable(false);
                        jcbStatus.setEnabled(false);
                        lblImagem.setIcon(null);
                        btnNovo.setEnabled(true);
                        btnSalvar.setEnabled(false);
                        btnCancelar.setEnabled(false);
                        btnImagem.setEnabled(false);
                    } else {
                        JOptionPane.showMessageDialog(this, "Nâo foi possivel salvar");
                    }
                
                }if(acao.equals("Editar")){
                    if(DAO.editar(obj)){
                        JOptionPane.showMessageDialog(this, "Registro Editado");
                        limparCampos();
                        jtSigla.setEditable(false);
                        jtDescricao.setEditable(false);
                        jcbStatus.setEnabled(false);
                        lblImagem.setIcon(null);
                        lblImagem.setEnabled(false);
                        btnNovo.setEnabled(true);
                        btnSalvar.setEnabled(false);
                        btnCancelar.setEnabled(false);
                        btnImagem.setEnabled(false);
                    }else{
                        JOptionPane.showMessageDialog(this, "Erro ao salvar Cadastro");
                    }
                
            }
        }
    } catch (Exception erro) {
        JOptionPane.showMessageDialog(this, "Erro ao salvar Cadastro");
        JOptionPane.showMessageDialog(this, "Erro:"
                + erro.getMessage());
    }

Botão Editar

private void jbEditarActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

jtSigla.setEditable(false);

jtDescricao.setEditable(true);

jcbStatus.setEnabled(true);

lblImagem.setEnabled(true);

btnNovo.setEnabled(false);

jbEditar.setEnabled(false);

btnSalvar.setEnabled(true);

btnCancelar.setEnabled(true);

btnImagem.setEnabled(true);

acao = Editar;

}

Classe DAO

public boolean incluir(Sistema obj) throws SQLException, FileNotFoundException {

Conexao con = new Conexao();

String SQL = INSERT INTO faculdade VALUES (?,?,?,?);

PreparedStatement ps = con.getConexao().prepareStatement(SQL);
ps.setString(1, obj.getSigla());
    ps.setString(2, obj.getDescricao());
    ps.setInt(3, obj.getStatus());
    ps.setBytes(4, obj.getImagem());
    int registros = ps.executeUpdate();

    if (registros > 0) {
        return true;
    } else {
        return false;
    }

}

Saberiam porque gera o erro?

Obrigado

2 Respostas

gbrvalerio

Colega, evite salvar imagens ou arquivos no banco de dados. Ao invés, salve o caminho pra eles no servidor.

D

Gbrvalerio, Obrigado. Vou seguir sua orientação.
Pelo que entendi, quando o sistema tenta fazer o update não identifica a imagem no jLabel ou caminho. Ai retorna este erro. Vou tentar fazer direto pelo servidor.
Outro problema que estou tendo, quando o update é realizado e faço uma nova pesquisa na lista, aparece 2 vezes o cadastro editado e anterior, como se não estivesse substituindo e sim alterando e criando uma nova linha no sql.
Vou enviar um exemplo, Está é a forma que fica duplicado no banco sql:

Este é o comando que estou utilizando no java:

public boolean editar(Sistema obj) throws SQLException {

Conexao con = new Conexao();

String SQL = “UPDATE faculdade SET Descricao = ?, Status = ?, Imagem = ? WHERE Sigla = ?”;
PreparedStatement ps = con.getConexao().prepareStatement(SQL);
    ps.setString(1, obj.getDescricao());
    ps.setInt(2, obj.getStatus());
    ps.setBytes(3, obj.getImagem());
    ps.setString(4, obj.getSigla());       
    int registros = ps.executeUpdate();
    if (registros>0) {
        return true;
    } else {
        return false;
Este salva no banco:

public boolean incluir(Sistema obj) throws SQLException, FileNotFoundException {

Conexao con = new Conexao();

String SQL = “INSERT INTO faculdade VALUES (?,?,?,?)”;

PreparedStatement ps = con.getConexao().prepareStatement(SQL);
ps.setString(1, obj.getSigla());
    ps.setString(2, obj.getDescricao());
    ps.setInt(3, obj.getStatus());
    ps.setBytes(4, obj.getImagem());
    int registros = ps.executeUpdate();

    if (registros > 0) {
        return true;
    } else {
        return false;

Neste caso, vc poderia me aconselhar em algo?

Criado 18 de fevereiro de 2016
Ultima resposta 19 de fev. de 2016
Respostas 2
Participantes 2