A consulta se realiza normalmente, mostra os resultados na table sem nenhum erro, só que a table ta acrescentando duas linhas com os mesmo dados.
E o código ta igual o da minha outra table que aprenseta os dados normal, da uma olhada ia pra ver se alguem acha algo de errado, to ficando louco já. Vlw ai galera ;D
A consulta se realiza normalmente, mostra os resultados na table sem nenhum erro, só que a table ta acrescentando duas linhas com os mesmo dados.
E o código ta igual o da minha outra table que aprenseta os dados normal, da uma olhada ia pra ver se alguem acha algo de errado, to ficando louco já. Vlw ai galera ;D
acho q ta nessa linha: tableModelAluno.removeRow(0);
tenta colocar i no lugar do 0.
se vc quiser limpar a tabela toda, use table.setNumRows(0); que limpa de uma so vez
drsmachado
Tem certeza que a query não está duplicando dados?
J
JavaPB
mauricioadl, coloquei i no lugar do 0 e continuou aparecendo dois dados iguais. Tentei usar o table.setNumRows(0); e tbm deu o msm erro.
Creio eu que não tenha nada de errado, mais confere, as vezes a gente nem ve o erro.
mauricioadl
coloca isso dentro do while() do seu select
Alunos alunos = new Alunos();
drsmachado
Então.
A questão é que, dependendo da query de consulta, pode ocorrer de dados virem duplicados.
Você postou o código, mas esqueceu de informar qual a string consultaAlunoNome.
Realize a query direto no banco de dados e verifique se ele duplica resultados.
J
JavaPB
A Query “ConsultaAlunoNome” é a seguinte :
privateStringConsultaAlunoNome="select * from cad_aluno where cad_aluno.nome like ?";
drsmachado
Então, pega ela, troca o ? por um nome que esteja lá e roda direto no banco.
Se ele não duplicar, você já sabe que o problema está a partir do resultset até a tabela, aí, debugando, conseguirá identificar onde ele duplica.
Caso traga duplicado, então precisa refinar tua query (group by, por exemplo).
Outra coisa, embora seja em ambiente específico “select *” não deve ser utilizado, a não ser que queira matar o banco de dados.
mauricioadl
acontece que essa query pode voltar mais de um contato igual, dae vc pensa que esta duplicando mas na verdade o banco esta trazendo valores iguais porque sua consulta ta pedindo isso.
Vc colocou o Alunos alunos = new Alunos(); dentro do while?
drsmachado
Maurício, da forma como o while está, a cada novo resultado, o objeto aluno é instanciado “zerado”.
Qual a razão de invocar e instanciar ali, se terá o mesmo efeito?
J
JavaPB
Coloquei sim mauricioadl, e não tem dados duplicados dentro da tabela.
drsmachado fiz o teste que vc falo dentro do banco de dados e ele não me trousse dados duplicados, no caso a query ta correta.
Vou tentar aqui’
drsmachado
Ok, então precisa debugar a aplicação e ir verificando, método a método em que lugar o registro duplica.
mauricioadl
privatevoidConsulta(){ConsultaBDconsultaBD=newConsultaBD();Stringnome=tf_aluno.getText();listaAlunos=consultaBD.consultaAlunos(nome);tableModelAluno.setNumRows(0);//limpa a tabelafor(inti=0;i<listaAlunos.size();i++){tableModelAluno.addRow(newObject[]{listaAlunos.get(i).getId()});}}
faz como o amigo disse, tenta debuggar pra ver onde duplica.
Nicolas_Fernandes
Debuge o seu código. Veja qual é a sentença SQL que está sendo gerada, e execute-a em seu editor do BD.
Caso haja erro nela, você a corrige ali mesmo e mude no seu código.
Outra coisa: PELO AMOR DE DEUS, ESQUECE ESSE DEFAULTTABLEMODEL!
Se você criasse o seu próprio modelo de dados, você não precisaria fazer desse jeito pra limpar a sua JTable, pra adicionar novas linhas, além de que você irá trabalhar com seus objetos de negócio, e não com arrays do tipo Object. Vale a pena dar uma conferida! [vide abaixo minha assinatura]