Problem reloading table

0

I'm having the following problem, on first run my DefaultTableModel loads normally as can be seen below in red:

Aftermakingaregistration,changeordeletiononce,thetableupdatesnormally,butwhenIruntheseoperationsthesecondtimeon,Igetthefollowingerror:

HowcanIsolvethisproblem?

ThisismyBean:

publicclassEdicao{privateStringisbn;privatedoublevalor;privateIntegerqtde;privateIntegernumPag;privateIntegerano;privateLivrolivro;privateEditoraeditora;privateIntegeraddQtde;publicvoidsetIsbn(Stringisbn){this.isbn=isbn;}publicStringgetIsbn(){returnisbn;}publicvoidsetValor(doublevalor){this.valor=valor;}publicdoublegetValor(){returnvalor;}publicvoidsetQtde(Integerqtde){this.qtde=qtde;}publicIntegergetQtde(){returnqtde;}publicvoidsetAno(Integerano){this.ano=ano;}publicIntegergetAno(){returnano;}publicvoidsetLivro(Livrolivro){this.livro=livro;}publicLivrogetLivro(){returnlivro;}publicvoidsetNumPag(IntegernumPag){this.numPag=numPag;}publicIntegergetNumPag(){returnnumPag;}publicvoidsetEditora(Editoraeditora){this.editora=editora;}publicEditoragetEditora(){returneditora;}publicvoidsetAddQtde(IntegeraddQtde){this.addQtde=addQtde;}publicIntegergetAddQtde(){returnaddQtde;}}

ThisismyDaomethodthatliststheissues

publicList<Edicao>listarEdicao(){Connectionconn=null;PreparedStatementps=null;ResultSetrs=null;Stringsql="";
    Livro livro = null;
    Editora editora = null;
    EditoraControle editoraControl = new EditoraControle();
    LivroControle livroControl = new LivroControle();

        conn = Conexao.getConexao();

        sql = "SELECT edic_isbn, edic_valor, edic_qtde, edic_numpag, edic_ano, edic_livro, edic_editora\n" +
                      "FROM public.edicao";

        List<Edicao> listaEdicao = new ArrayList<Edicao>();

        Edicao edicao = null;
        livro = null;
                editora = null;

        try {

            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();

            while(rs.next()){

                            edicao = new Edicao();

                            edicao.setIsbn(rs.getString("edic_isbn"));
                            edicao.setValor(rs.getDouble("edic_valor"));
                            edicao.setQtde(rs.getInt("edic_qtde"));
                            edicao.setNumPag(rs.getInt("edic_numpag"));
                            edicao.setAno(rs.getInt("edic_ano"));

                            livro = livroControl.consultar(rs.getInt("edic_livro"));
                            editora = editoraControl.consultar(rs.getString("edic_editora"));

                            edicao.setLivro(livro);
                            edicao.setEditora(editora);
                            listaEdicao.add(edicao);

            }
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("Erro na Consulta !!"+e.getMessage());
        }
        return listaEdicao;
    }

This is my CONTROL

public class EdicaoControle {
    Edicao edicao = new Edicao();
    EdicaoDao edicaoDao = new EdicaoDao();

    public boolean salvar(Edicao edicao){
        boolean salvou = edicaoDao.salvar(edicao);
        return salvou;
    }

    public Edicao consultar(String cnpj){
        edicao = edicaoDao.consultar(cnpj);
        return edicao;
    }

    public boolean alterar(Edicao edicao){
        boolean alterou = edicaoDao.alterar(edicao);
        return alterou;
    }

    public boolean excluir (Edicao edicao){
        boolean excluiu = edicaoDao.excluir(edicao);
        return excluiu;
    }

    public List<Edicao> listar(){
        List<Edicao> lista = new ArrayList<Edicao>();
        lista = edicaoDao.listarEdicao();
        return lista;
    }
}

This is method in VIEW responsible for loading the table

public void preencherTabelaEdicao(){   

       Tabela_Edicao.getColumnModel().getColumn(0).setPreferredWidth(80);
       Tabela_Edicao.getColumnModel().getColumn(1).setPreferredWidth(220);
       Tabela_Edicao.getColumnModel().getColumn(2).setPreferredWidth(4);
       Tabela_Edicao.getColumnModel().getColumn(3).setPreferredWidth(5);
       Tabela_Edicao.getColumnModel().getColumn(4).setPreferredWidth(5);
       Tabela_Edicao.getColumnModel().getColumn(5).setPreferredWidth(7);
       Tabela_Edicao.getColumnModel().getColumn(6).setPreferredWidth(220);
       DefaultTableModel modelo = (DefaultTableModel)Tabela_Edicao.getModel();
          modelo.setNumRows(0);

        List<Edicao> listaEdicao = new ArrayList<Edicao>();
        listaEdicao = edicaoControl.listar();

        try{
            for(Edicao e: listaEdicao){
                modelo.addRow(new Object[]{e.getIsbn(), e.getLivro().getLivnome(),e.getAno(),e.getNumPag(),e.getQtde(),e.getValor(),
                    e.getEditora().getEdit_nome()});                  
            }
        }catch(Exception erro){
             JOptionPane.showMessageDialog(null, "A tabela EDIÇÃO não pôde ser carregada");
         }

    }

After saving, changing and deleting I just call the method that loads the table, that is, I call the fillTextType () method.

    
asked by anonymous 02.01.2018 / 03:46

1 answer

0

DAO EDITION CONSULTATION METHOD:

public Edicao consultar(String isbn){
    conn = Conexao.getConexao();

    sql = "SELECT edic_isbn, edic_valor, edic_qtde, edic_numpag, edic_ano, edic_livro, edic_editora, addqtde\n" +
              "FROM public.edicao WHERE edic_isbn = '"+isbn+"'";

    Edicao edicao = null;

    try {

        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();

        if(rs.next()){

            edicao = new Edicao();

                        edicao.setIsbn(rs.getString("edic_isbn"));
                        edicao.setValor(rs.getDouble("edic_valor"));
                        edicao.setQtde(rs.getInt("edic_qtde"));
                        edicao.setNumPag(rs.getInt("edic_numpag"));
                        edicao.setAno(rs.getInt("edic_ano"));

                        livro = livroControl.consultar(rs.getInt("edic_livro"));
            editora = editoraControl.consultar(rs.getString("edic_editora"));
                        edicao.setAddQtde(rs.getInt("addqtde"));
                        edicao.setLivro(livro);
                        edicao.setEditora(editora);

                        conn.close();   // FECHA A CONEXÃO COM O BANCO DE DADOS
                        ps.close();     // FECHA O PREPAREDSTATEMENT
                        rs.close();     // FECHA O RESULTSET

        }

    } catch (Exception e) {
        // TODO: handle exception
                e.printStackTrace();
        System.out.println("Erro na Consulta EDIÇÃO!!"+e.getMessage());
    }

DAO METHOD OF LISTING THE EDITIONS

public List<Edicao> listarEdicao(){
        conn = Conexao.getConexao();

        sql = "SELECT edic_isbn, edic_valor, edic_qtde, edic_numpag, edic_ano, edic_livro, edic_editora\n" +
                      "FROM public.edicao";

        List<Edicao> listaEdicao = new ArrayList<Edicao>();

        Edicao edicao = null;
        livro = null;
                editora = null;

        try {

            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();

            while(rs.next()){

                            edicao = new Edicao();

                            edicao.setIsbn(rs.getString("edic_isbn"));
                            edicao.setValor(rs.getDouble("edic_valor"));
                            edicao.setQtde(rs.getInt("edic_qtde"));
                            edicao.setNumPag(rs.getInt("edic_numpag"));
                            edicao.setAno(rs.getInt("edic_ano"));

                            livro = livroControl.consultar(rs.getInt("edic_livro"));
                            editora = editoraControl.consultar(rs.getString("edic_editora"));

                            edicao.setLivro(livro);
                            edicao.setEditora(editora);
                            listaEdicao.add(edicao);

                            conn.close();  // FECHA A CONEXÃO DO BANCO DE DADOS
            }
        } catch (Exception e) {
            // TODO: handle exception
                        e.printStackTrace();
            System.out.println("Erro na Listar Edição !!"+e.getMessage());
        }
        return listaEdicao;


    }
WHAT WAS CAUSING THE ERROR IN THE TABLE, MORE SPECIFICALLY IN THE METHOD OF LISTING EDITIONS IN THE DAO EDITION CLASS WAS BECAUSE I WAS OPENING VARIOUS SESSIONS WITH DATABASE INCLUDING THE RESULTSET, AS A SOLUTION I SIMPLY CLOSE THE CONNECTIONS AND THE RESULTSET.

THIS IS MY CLASS CONNECTION:

public class Conexao {
    public static Connection getConexao(){
            Connection con = null;

            String url = "jdbc:postgresql://localhost/Livraria_bk";
            String user = "postgres";
            String senha = "12345";

            try {
                    Class.forName("org.postgresql.Driver");
                    con = DriverManager.getConnection(url, user, senha);
                   // System.out.println("Conexão ok  !");
                 // JOptionPane.showMessageDialog(null, "Conexão Bem - Sucedida !!! ");

            } catch (Exception e) {
                    System.out.println("Erro na conexao !" +e.getMessage());
            }
            return con;
    }

    public static void main(String[] args) {
          Conexao.getConexao();     

    }
}
    
02.01.2018 / 18:00