[RESOLVIDO] Erro ao inserir linhas em uma JTable

8 respostas
Conrado_Andrade

Galera, estou fazendo uma tela para o usuário fazer buscas no banco de dados. Os dados serão exibidos em uma JTable.
Mas não sei o que está acontecendo que não está exibindo. Quando eu clico no botão Buscar não aparece nada na JTable e está dando o erro AWT-EventQueue-0" java.lang.NullPointerException. Se vcs puderem me ajudar ficaria grato!

public List<Livros> getLista(String livro) throws SQLException {

        String sql = "select * from cadastro_livros where titulo like ?";
        PreparedStatement pstm = this.conexao.prepareStatement(sql);
        pstm.setString(1, livro);
        ResultSet rs = pstm.executeQuery();

        List<Livros> minhaLista = new ArrayList<Livros>();

        while (rs.next()) {

            Livros l1 = new Livros();

            l1.setCodigo(Integer.valueOf(rs.getString("codigo_livro")));
            l1.setTitulo(rs.getString("titulo"));
            l1.setAutor(rs.getString("autor"));
            l1.setVolume(Integer.valueOf(rs.getString("volume")));
            l1.setEdicao(rs.getString("edicao"));
            l1.setAnoEdicao(Integer.valueOf(rs.getString("ano_edicao")));
            l1.setEditora(rs.getString("editora"));
            l1.setGenero(rs.getString("genero"));
            l1.setLocalizacao(rs.getString("localizacao"));
            l1.setDisponibilidade(rs.getString("disponibilidade"));
            minhaLista.add(l1);
        }
        
        rs.close();
        pstm.close();
        return minhaLista;

    }
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        try {
            listarLivros();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "A busca não pode ser concluída\n" + ex, "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }                                         
    
    public void listarLivros() throws SQLException {

        AddBD add = new AddBD();
        add.getLista("%" + txtBuscar.getText() + "%");
        mostrarPesquisa(livro);

    }

     private void mostrarPesquisa(List<Livros> livro) {

        if (livro.size() == 0) {
            JOptionPane.showMessageDialog(null, "Nenhum livro foi encontrado", "Atenção!", JOptionPane.WARNING_MESSAGE);
        } else {
            String[] linha = new String[]{null, null, null, null, null};
            for (int i = 0; i < livro.size(); i++) {
                tmLivro.addRow(linha);
                tmLivro.setValueAt(livro.get(i).getCodigo(), i, 0);
                tmLivro.setValueAt(livro.get(i).getTitulo(), i, 1);
                tmLivro.setValueAt(livro.get(i).getAutor(), i, 2);
                tmLivro.setValueAt(livro.get(i).getGenero(), i, 3);
                tmLivro.setValueAt(livro.get(i).getDisponibilidade(), i, 4);
            }
        }
     }

8 Respostas

Conrado_Andrade

Alguém pode me ajudar?
Valeu!

Conrado_Andrade

Alguém mais? haha

lina

Oi,

Qual a linha do NullPointer?

Adiantando:

if (txtBuscar != null) add.getLista("%" + txtBuscar.getText() + "%");

Tchauzin!

Conrado_Andrade

lina, acho que não entendi bem. Eu devo adicionar esse if ?

Conrado_Andrade

Eu coloquei esse if e não mudou nada! :S
Até pq isso seria desnecessário, pois se eu clicar no botão buscar sem ter especificado o que buscar era para ele listar todos os livros que estão cadastrados no meu banco.

Conrado_Andrade

Ae lina, deu certo aqui! O certo era:

livro = add.getLista("%" + txtBuscar.getText() + "%");

Obrigado pela sua atenção.

Marky.Vasconcelos

Atenção, não use DefaultTableModel.

Isso te causa mais problemas do que soluções.

Voce já tem sua classe modelada e o DAO funcionando, só falta escrever um TableModel, siga os links da minha assinatura para aprender como fazer isso.

Conrado_Andrade

Valeu Marky! Vou seguir suas dicas.

Criado 22 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 8
Participantes 3