public void setVar5(ResultSet rs) {
this.rs=rs;
try {
int contador=0;
while(rs.next()){
jTable1.setValueAt(rs.getString("nome"),contador,0);
jTable1.setValueAt(rs.getString("rg"),contador,1);
jTable1.setValueAt(rs.getString("cpf"),contador,2);
System.out.print(contador);
contador++;
}
} catch (SQLException ex) {
Logger.getLogger(PesquisaLivros.class.getName()).log(Level.SEVERE, null, ex);
}
}
Problema com rs.next
11 Respostas
Realmnete este é o comportamento esperado pra iteração de resultados, se isto não está ocorrendo, e notando que a sintaxe de utilização está aparentemente correta, é de se supor que o problema esteja na consulta, ou em algum outro ponto do código que não foi postado aqui, se puder especificar um pouco mais, seria mais fácil de lhe ajudar
Oi,
Será que o resultado do select não está retornando apenas 1 linha ?
Tchauzin!
é uma jTable de no maximo 7 linhas, e essa é minha busca
stm = (PreparedStatement) conn.prepareStatement("select nome, rg, cpf from cliente where nome = '"+pesq+"'");
stm.execute();
ResultSet rs = stm.getResultSet();
pra testar estou fazendo uma busca q retorna 2 resultados, testei direto no bd e realmente esta retornando 2.
mas parece q na hora de inserir na tabela ele esta sobrepondo na mesma linha da tabela.
o System.out.print(contador); imprime somente o “0” ou seja esta passando apenas uma vez ali
se tiver um outro modo de eu colocar que deve passar e pegar os 7 primeiros(nem sempre vai ter 7) e inserir…
O setValueAt só troca valores das células, não adiciona novas linhas.
O ideal é você aprender a trabalhar com um TableModel, especialmente um que não seja o Default.
Nos links da minha assinatura, tem dezenas de exemplos.
Tópico movido para o fórum de interface gráfica. BD e Swing já deixaram de ser “java básico” faz tempo.
Já que vc está usando PreparedStatement, passe parâmetros da maneira correta ao invés de concatena-los na sua query. Assim seu código não dá pau se o nome procurado for “MacDonal’s”:
stm = conn.prepareStatement("SELECT nome, rg, cpf FROM cliente WHERE nome = ?");
stm.setString(1, pesq);
ResultSet rs = stm.executeQuery();
Outra coisa que poderiam fazer do jeito que você deixou. Tente procurar um cliente com esse nome:
E poderiam alterar também a senha da base inteira…
Com parâmetros, da forma que mostrei, ’ são encaradas como ’ mesmo. Não como o caractere que fecha a query. 
Oi,
É verdade. É verdade!
Tchauzin!
as linhas e colunas são fixas, independente de quantos resultados tiverem serão sempre 7 linhas e 3 colunas, porisso só usei o setValueAT meu raciocínio foi assim
o while() vai fazer ele passar pelo código “N” vezes onde N = quantidade de resultados, o “contador” ia dizer a linha q é pra ser inserido o resultado, primeira volta no 0, segunda no 1 e assim por diante pois o contador a cada volta é somado 1 nelers.next()
as linhas e colunas são fixas, independente de quantos resultados tiverem serão sempre 7 linhas e 3 colunas, porisso só usei o setValueAT meu raciocínio foi assim
owhile() vai fazer ele passar pelo código “N” vezes onde N = quantidade de resultados, o “contador” ia dizer a linha q é pra ser inserido o resultado, primeira volta no 0, segunda no 1 e assim por diante pois o contador a cada volta é somado 1 nelers.next()
Mas vc já deixou 7 linhas em branco lá?
deixei sim, a tabela esta montada, só falta o resultado da busca nela
Nesse caso, volto a pergunta. Tem certeza que teu select, com os critérios que vc tá usando, não retorna uma só linha?
E já corrigiu o PreparedStatement como eu falei?
Outra coisa… não use tabelas desse jeito. O ideal é sempre usar a tabela através do model.
E não estou falando do DefaultTableModel. Nos links da minha assinatura, tem exemplos de como fazer um TableModel corretamente.