Galera me ajudem please, preciso gravar dados de uma jtable para o postgres, o que eu não sei é como percorrer as linha para pegar os dados dela para jogar no meu sql, tenho que percorrer linha por linha? como faço isso?
Você não tem que jogar os dados do JTable para o postgres. Seu JTable exibe algum dado, de algum lugar (normalmente de uma estrutura que está dentro do seu TableModel). É essa estrutura que você deve jogar para o postgres.
E isso provavelmente vai ser um arraylist de objetos normal.
ok. fiz assim e deu certo só que quando vou adicionar outro ítem ele sobrepõe o primeiro que eu ja tinha colocado na jtable, ele não adiciona em outra linha segue o código:
modelo1.addRow(new Object [] {tf_codigo.getText(),cbProduto.getSelectedItem(),tfCodProd.getText(),tfQuantidade.getText(),tfPrecoCusto.getText(),tfPrecoVenda.getText()});
Bom. Seu modelo é um DefaultTableModel, certo? O erro já começa por aí. Usar o DefaultTableModel é pedir por horas de estresse, por código duplicado, ilegível e difícil de manter. O DefaultTableModel está mais para um exemplo, do que para uma funcionalidade real.
Do contrário, aprenda a lidar com TableModel, e faça o seu. Aqui estão ótimos tutoriais para isso:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472
E aqui está um exemplo de um TableModel:
http://www.guj.com.br/posts/list/98452.java#530523
Garanto que assim que você entender a maneira correta de resolver o problema, essa e outras dúvidas em relação a tabelas desaparecerão.
[color=darkblue] Não sei se te ajuda, eu fiz um dessa forma :[/color]
javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)table.getModel();
int count = 0;
do {
quant = dtm.getValueAt(count, 0) == null ? 0 : dtm.getValueAt(count, 0) ;
produto = dtm.getValueAt(count, 1) == null ? "" :dtm.getValueAt(count, 1);
largura = dtm.getValueAt(count, 2) == null ? "" :dtm.getValueAt(count, 2);
altura = dtm.getValueAt(count, 3) == null ? "" :dtm.getValueAt(count, 3);
ambiente = dtm.getValueAt(count, 4) == null ? "" :dtm.getValueAt(count, 4);
valor = dtm.getValueAt(count, 5) == null ? "" :dtm.getValueAt(count, 5);
produtoVO.setQuantidade(Integer.valueOf(quant.toString()));
produtoVO.setProduto(produto.toString());
produtoVO.setLargura(largura.toString());
produtoVO.setAltura(altura.toString());
produtoVO.setAmbiente(ambiente.toString());
produtoVO.setValor(valor.toString());
produtoVO.setIdCliente(maximo);
produtoDAO.insereProduto(produtoVO);
count++;
} while (count != dtm.getRowCount());
JOptionPane.showMessageDialog(null, "Cadastro realizado !");
}
Se seu código é assim, deve ser muito difícil mudar o número de uma coluna sem quebrar diversos trechos do seu programa.
Volto a dizer, esqueçam o DefaultTableModel e estudem a construção de um model próprio. Vocês estão tornado o código mais complexo e mais difícil de manter desnecessariamente.
[quote=ViniGodoy]Se seu código é assim, deve ser muito difícil mudar o número de uma coluna sem quebrar diversos trechos do seu programa.
Volto a dizer, esqueçam o DefaultTableModel e estudem a construção de um model próprio. Vocês estão tornado o código mais complexo e mais difícil de manter desnecessariamente. [/quote]
[color=darkblue] Vou procurar estudar, fiz assim porque era basicamente o que eu conhecia, sempre é melhor facilitar[/color]