Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Abstract table model - alterar registro da tabela onde a coluna é um objeto

$
0
0

@Fabricio_Costa escreveu:

Galera quem puder me tirar essa dúvida, procurei em vários tópicos e outros locais e não encontrei a resposta. Desde já muito obrigado pela ajuda.

No projeto preciso criar uma tabela e jogar os dados de dois ou mais objetos nessa tabela, criei o método com o select (inner join nas tabelas) que preciso na classe DAO, jogo na tabela e até ai tudo bem, o resultado está ok na jtable, o problema é na hora de alterar esses registros que são outros objetos de outras classes, no meu modo de pensar toda vez que eu altero um registro não é necessário recarregar a lista toda novamente e sim apenas atualizar aquela linha na jtable e no banco, toda vez que eu atualizo da erro na jtable e no banco está ok, criei a tabela com extends da AbstractTableModel e os métodos, mas estou enrolado nisso, alguém tem uma luz?
ou o método para atualizar?

De forma mais simplificada, tenho um cadastro de clientes com os campos a serem preenchidos e o combobox de estado a ser selecionado, quando clico no botão Atualizar os campos de preenchimentos atualizam normalmente na jtable, mas quando mudo a opção do combobox da o erro de NullPointerExceptione não atualiza na jtable mas atualiza no banco.

//MÉTODO PARA ATUALIZAR UM REGISTRO DO BANCO - CLASSE DAO
    public void update(Pessoa pessoa, Uf uf) {
        try {
            String sql = "update tbl_pessoa set nome_pessoa = ?, idade_pessoa = ?, cod_uf = ? where cod_pessoa = ?";

            PreparedStatement stmt = connection.prepareStatement(sql);
            stmt.setString(1, pessoa.getNome());
            stmt.setInt(2, pessoa.getIdade());
            stmt.setObject(3, uf.getCodUf());
            stmt.setInt(4, pessoa.getCodigo());
            
            stmt.execute();
            stmt.close();

        } catch (SQLException error) {
            throw new RuntimeException(error);
        } finally {
            try {
                connection.close();
            } catch (SQLException ex) {
                Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }//FIM DO MÉTODO ATUALIZAR 


private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // BOTÃO EDITAR
        try {
            int linha = this.TabelaPessoa.getSelectedRow();

            Pessoa novaPessoa = new Pessoa();
            
            novaPessoa.setNome(txtNome.getText());
            novaPessoa.setIdade(Integer.parseInt(txtIdade.getText()));
            Uf uf = (Uf)Cbestado.getSelectedItem();
            novaPessoa.setCodigo(Integer.parseInt(txtCodigo.getText()));

            PessoaDAO dao = new PessoaDAO();
            dao.update(novaPessoa, uf);
            modelo.setValueAt(novaPessoa, linha);
            JOptionPane.showMessageDialog(null, "Registro alterado com sucesso!");

            //BOTÕES NOVO, SALVAR, ATUALIZAR E EXCLUIR
            btnNovo.setEnabled(true);
            btnSalvar.setEnabled(false);
            btnEditar.setEnabled(false);
            btnExcluir.setEnabled(false);

            //FECHAR CAMPOS DO FORM
            fecharCampos();

        } catch (Exception error) {
            throw new RuntimeException(error);
        }
    }                

//MÉTODO PARA ATUALIZAR A TABELA, ATRVÉS DO OBJ E SUA RESPECTIVA LINHA DA LISTA
    public void setValueAt(Pessoa aValue, int rowIndex){
        linhas.set(rowIndex, aValue);
        fireTableRowsUpdated(rowIndex, rowIndex);
        
    }

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>