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?
Gravar do Jtable pro banco de dados
6 Respostas
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.
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.
[color=darkblue] Vou procurar estudar, fiz assim porque era basicamente o que eu conhecia, sempre é melhor facilitar[/color]