Bom, estou querendo preencher um JTable com dados provenientes de uma consulta feita ao banco.
Na classe AgendaControle fiz o seguinte método:
publicArrayListpesquisa(AgendaTelefoneagenda){try{con=newConexao();stm=con.conexao().prepareStatement("select * from telefone");stm.execute();while(rs.next()){agenda.setId(rs.getInt("id"));agenda.setNome(rs.getString("nome"));agenda.setFone1(rs.getString("telefone1"));agenda.setFone2(rs.getString("telefone2"));agenda.setFone3(rs.getString("telefone3"));agenda.setEndereco(rs.getString("endereco"));contato.add(agenda);}con.fechaConexao();}catch(Exceptione){System.out.println("Erro"+e);}returncontato;}
e na interface gráfica estou tentando popular a tabela com o array de contatos, porém não estou conseguindo
Primeiro: a classe q faz acesso ao bd nao deve se chamar ‘Controle’…
Segundo: que tal aprender Hibernate?
Terceiro: nao use DTM… leia o topico na minha assinatura.
SandroSoftwares
eu estou com um problema parecido:
publicArrayList<Contato>getContatosCadastrados()throwsSQLException{Stringsql="Select * from Agenda order by nome";PreparedStatementstmt=conexao.prepareStatement(sql);Contatocontato=newContato();ResultSetrs=stmt.executeQuery();ArrayList<Contato>contatos=newArrayList<Contato>();while(rs.next()){contato.setIdContato(rs.getInt("idcontato"));contato.setNome(rs.getString("nome"));contato.setCelular1(rs.getString("celular1"));contato.setCelular2(rs.getString("celular2"));contato.setTelefone(rs.getString("telefone"));contato.setFax(rs.getString("fax"));contatos.add(contato);inta=0;System.out.println(contatos.get(a++).getNome());// aqui retorna cada nome gravado no banco}returncontatos;}
mas na hora de preencher a tabela só retorna o último elemento do arraylist
publicvoidatualizaJTable(){try{AgendaDaodao=newAgendaDao();modelo=(DefaultTableModel)jTableTelefones.getModel();modelo.setNumRows(0);ArrayList<Contato>contatos=dao.getContatosCadastrados();for(intcont=0,i=0;i<contatos.size();++i,++cont){//Aqui você adiciona os campos do banco de dados no jTable.modelo.addRow(newObject[]{cont,contatos.get(i).getIdContato(),contatos.get(i).getNome(),contatos.get(i).getCelular1(),contatos.get(i).getCelular2(),contatos.get(i).getTelefone(),contatos.get(i).getFax()});}}catch(SQLExceptionex){}
wagnerfrancisco
Qual a exceção que ocorre RosiFrasson?
Como o d34d_d3v1l comentou, evitem usar o DefaultTableModel. Se insistirem, observem que o método setNumRows foi substituído por setRowCount.
E não esqueçam de usar blocos try/finally para fechar conexões, resultsets e etc.
SandroSoftwares
colegas,
me perdoem se estiver errado, mas se na linha 19 do primeiro trecho de código que eu postei retorna todos os nomes gravados no banco certinho e na linha 12 do segundo trecho de código retorna apenas o ultimo elemento do array, por que o problema está no DefaultTableModel???
acho que o problema está na linha 7:
ArrayList<Contato>contatos=dao.getContatosCadastrados();//aqui não retorna tudo, só retorna o último...
Alguma luz ai?
d34d_d3v1l
hehehe ja vi o problema…
coloque o
Contatocontato=newContato();
dentro do:
while(rs.next()){
SandroSoftwares
como é que pode?
o problema era só esse…
rsrsrs…
resolvido d34d_d3v1l!
d34d_d3v1l
SandroSoftwares:
como é que pode?
o problema era só esse…
rsrsrs…
resolvido d34d_d3v1l!
isso ae…
Coloca [Resolvido] no titulo to post ?
vc ja entendeu o pq isso aconteceu ne?
Bom, antes de esperar tua resposta, vamos a explicação:
vc tava adicionar apenas uma instancia de contato na array list…
ai vc fica modificando os seus atributos.
SandroSoftwares
Perfect!
Só não altero o título pois ainda tem o problema do nosso amigo RosiFrasson, criador do post!
Pra mim resolveu aqui!
d34d_d3v1l
SandroSoftwares:
Perfect!
Só não altero o título pois ainda tem o problema do nosso amigo RosiFrasson, criador do post!
Pra mim resolveu aqui!
dsuhasdhuasd
putzz…
q bola fora!!
desculpa kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk