Estou fazendo uma pesquisa no BD e mostrando os resultados da pesquisa dentro de uma table, com o seguinte código:
private void Consulta() {
ConsultaBD consultaBD = new ConsultaBD();
String nome = tf_aluno.getText();
listaAlunos = consultaBD.consultaAlunos(nome);
int numeroLinhas = tbl_alunos.getRowCount();
for (int i = 0; i < numeroLinhas; i++) {
tableModelAluno.removeRow(0);
}
for (int i = 0; i < listaAlunos.size(); i++) {
tableModelAluno.insertRow(i, new Object[]{listaAlunos.get(i).getId()
});
}
}
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
[quote=JavaPB]Estou fazendo uma pesquisa no BD e mostrando os resultados da pesquisa dentro de uma table, com o seguinte código:
private void Consulta() {
ConsultaBD consultaBD = new ConsultaBD();
String nome = tf_aluno.getText();
listaAlunos = consultaBD.consultaAlunos(nome);
int numeroLinhas = tbl_alunos.getRowCount();
for (int i = 0; i < numeroLinhas; i++) {
tableModelAluno.removeRow(0);
}
for (int i = 0; i < listaAlunos.size(); i++) {
tableModelAluno.insertRow(i, new Object[]{listaAlunos.get(i).getId()
});
}
}
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[/quote]
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
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.
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?
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?
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]