Jtable receber todos registros no banco de dados

3 respostas
T

Pessoal, preciso de uma ajuda

eu preciso criar um sistema em que uma janela apresente todos os registros do banco de dados, e para isso decidi usar uma jTable. Criei um método em minha classe de acesso ao banco de dados para pegar todos os registros do banco de dados, passar para arrayList e em minha classe de tela criei um método para atribuir esses valores ao jtable. Quando executo meu código, recebo ocorre o erro abaixo:

Exception in thread “AWT-EventQueue-0” java.lang.IndexOutOfBoundsException: Index: 11, Size: 11

Alguém sabe o motivo? E se puder, avaliem o código para eu saber se estou no caminho certo ou não.

Código da classe de acesso ao banco de dados

public List resultadoTitulo = new ArrayList();
        public List resultadoAutor = new ArrayList();
        public List resultadoEdicao = new ArrayList();
        public List resultadoCategoria = new ArrayList();
        public List resultadoPreco = new ArrayList();
        public List resultadoEstoque = new ArrayList();
        public List resultadoIsbn = new ArrayList();

        public void buscaDados() throws SQLException{
            Statement stm = con.createStatement();    
            String query = "SELECT * FROM APP.LIVRO";
            ResultSet rst = stm.executeQuery(query);
            while(rst.next()){
                resultadoTitulo.add(rst.getString("TITULO"));
                resultadoAutor.add(rst.getString("AUTOR"));
                resultadoEdicao.add(rst.getString("EDICAO"));
                resultadoCategoria.add(rst.getString("CATEGORIA"));
                resultadoPreco.add(rst.getString("PRECO"));
                resultadoEstoque.add(rst.getString("ESTOQUE"));
                resultadoIsbn.add(rst.getString("ISBN"));
            }
        }

Método da classe de tela que passa os valores para a jTable

private void buscaDados() throws SQLException{
            int i = 0;
            int j = con.contaRegistros();
            try{
                con.buscaDados();
            for (i = 0; i <= j; i++){
            modelo.addRow(new Object []{ con.resultadoIsbn.get(i).toString(),con.resultadoTitulo.get(i).toString(),con.resultadoAutor.get(i).toString(),con.resultadoEdicao.get(i).toString(),con.resultadoCategoria.get(i).toString(),"R$ "+con.resultadoPreco.get(i).toString(),con.resultadoEstoque.get(i).toString()});
            }
            }catch(SQLDataException ex){
                Logger.getLogger(ConsultaGerenciar.class.getName()).log(Level.SEVERE,null,ex);
            }

3 Respostas

michetti

Você criando um list você consegue armazenar todos os dados… você criou um list para cada coisa :stuck_out_tongue:

T
michetti:
Você criando um list você consegue armazenar todos os dados.. você criou um list para cada coisa :P
beleza, esse problema foi resolvido! agora, eu estou com outro problema: o jtable não aparece quando executo meu código. Quando digo que não aparece, digo que nem carrega as colunas, aparece apenas o jscrollpane, botões e txtfields. segue o construtor:
public ConsultaGerenciar(BancoDeDados conect) throws SQLException{
                con = conect;
                criaJTable();
                buscaDados();
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 510, 373);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		informacaoConsulta = new JTextField();
		informacaoConsulta.setBounds(10, 11, 385, 20);
		contentPane.add(informacaoConsulta);
		informacaoConsulta.setColumns(10);
		
		JButton btnConsultar = new JButton("Consultar");
		btnConsultar.setBounds(405, 10, 89, 23);
		contentPane.add(btnConsultar);
		
		JScrollPane scrollPaneRetorno = new JScrollPane();
		scrollPaneRetorno.setBounds(10, 42, 484, 264);
		contentPane.add(scrollPaneRetorno);
		
		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.setBounds(405, 317, 89, 23);
		contentPane.add(btnCancelar);
		
		JButton btnExcluir = new JButton("Excluir");
		btnExcluir.setBounds(298, 317, 89, 23);
		contentPane.add(btnExcluir);
		
		JButton btnEditar = new JButton("Editar");
		btnEditar.setBounds(188, 317, 89, 23);
		contentPane.add(btnEditar);
}
Segue método CriaTable
private void criaJTable() throws SQLException{
         
            tabela = new JTable(modelo);
            modelo.addColumn("Titulo Livro");
            modelo.addColumn("Autor Livro");
            modelo.addColumn("Edição Livro");
            modelo.addColumn("ISBN Livro");
            modelo.addColumn("Categoria Livro");
            modelo.addColumn("Preço Livro");
            modelo.addColumn("Estoque Livro");
            tabela.getColumnModel().getColumn(0).setPreferredWidth(100);
            tabela.getColumnModel().getColumn(1).setPreferredWidth(100);
            tabela.getColumnModel().getColumn(2).setPreferredWidth(20);
            tabela.getColumnModel().getColumn(3).setPreferredWidth(20);
            tabela.getColumnModel().getColumn(4).setPreferredWidth(100);
            tabela.getColumnModel().getColumn(5).setPreferredWidth(20);
            tabela.getColumnModel().getColumn(6).setPreferredWidth(20);
        }
michetti

Bacana… você escreve seu código todo :slight_smile:

Porque você não cria um AbstractTableModel? Ou este “modelo” já um tipo de TableModel ?

Criado 22 de novembro de 2013
Ultima resposta 23 de nov. de 2013
Respostas 3
Participantes 2