Jtable problema com atualizaÇÃo

3 respostas
A

Bom, estou tentando fazer um simples programa simplesmente para incluir, alterar e excluir um produto e seu preço de venda digitado pelo usuário e armazenado no banco de dados, no inicio quando chamo os dados do banco para a tabela através do método preencher_jtable() criado no fim do código, funciona normalmente, o problema é não estou conseguindo fazer a atualização da tabela quando o usuário exclui ou altera um dado, então adicionei ao evento de excluir e alterar novamente o método de preencher_jtable(), só que quando a tabela é ré-preenchida depois que o usuário excluiu ou alterou um dado cadastrado, o primeiro dado do BD não é mostrado na tabela, só é mostrado do segundo em diante, Exemplo: “se eu tenho cadastrado no BD os registros de código 1, 3, 4, 5, 8 e 9, quando chamo a tabela ao iniciar o aplicativo, é mostrado todos os registros, se eu excluir o registro 5 por exemplo, ao reconstruir a tabela, mostrará na tabela apenas os registros 3, 4, 8 e 9.”
alguém sabe um jeito mais pratico para resolver essa questão de atualizar os dados ao clicar nos botões de excluir, salvar e alterar, já procurei e não encontrei, agradeço qualquer esforço.

OBS: Eu não sou o criador do código fonte, estou estudando programação Java e peguei um código como exemplo através de algumas video aulas e sites da internet, para estudar e compreender, consegui entender o código, só falta compreender um método para atualizar corretamente a tabela. Não criei tudo na mão, usei a ferramenta NETBEANS para criar o formulário e adicionei eventos aos botões.

vou postar o código para ficar melhor de entender e de possível ajuda, só tem um pequeno problema, estou usando o access2007 como banco de dados, que postarei tudo junto com o código em arquivo .rar
Serei grato à quem puder me dá uma dica.
Obrigado.
trecho para excluir um dado do banco junto com o método preencher_jtable()
O código completo está em anexo

private void jButton_excluirActionPerformed(java.awt.event.ActionEvent evt) {

// procedimento para exclusão de registro

try

{

String sql = "select * from cardapio Where codigo = "+jTextField_codigo.getText();

con_produtos.executeSQL(sql);

con_produtos.resultset.first();

String nome = Deletar o Ítem : +con_produtos.resultset.getString(descricao)+ ?;

int opcao_escolhida = JOptionPane.showConfirmDialog(null,nome,"Excluir Ítem ",JOptionPane.YES_NO_OPTION);

if (opcao_escolhida == JOptionPane.YES_OPTION)

{

sql = DELETE FROM cardapio Where codigo =+jTextField_codigo.getText();

int conseguiu_excluir = con_produtos.statement.executeUpdate(sql);

if (conseguiu_excluir == 1)

{

JOptionPane.showMessageDialog(null,Exclusão realizada com sucesso);

//atualiza o ResultSet

con_produtos.executeSQL(Select * from cardapio);

con_produtos.resultset.first(); //posiciona no primeiro registro

mostra_dados(); //irá chamar a função em que irá mstrar os dados no form

preencher_jtable();
}
     }
     else
       return;
    
}
catch (SQLException erro)
{
JOptionPane.showMessageDialog(null,"Erro a tentar excluir o registro..."+erro);
 }

}

public void preencher_jtable()

{

jTable1.getColumnModel().getColumn(0).setPreferredWidth(20);

jTable1.getColumnModel().getColumn(1).setPreferredWidth(100);

jTable1.getColumnModel().getColumn(2).setPreferredWidth(20);
DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();
    modelo.setRowCount(0);

    try
    {            
        while (con_produtos.resultset.next())            
        modelo.addRow(new Object [] {con_produtos.resultset.getString("codigo"),con_produtos.resultset.getString("descricao"),con_produtos.resultset.getString("preco")});
        con_produtos.resultset.first();
        
    }
catch (SQLException erro){

JOptionPane.showMessageDialog(null,"Erro ao listar no JTable "+erro);

}

}

3 Respostas

ViniGodoy

Leia o link da minha assinatura sobre TableModel.

Com o DefaultTableModel, será muito mais difícil entender como funcionam recursos como esse, de atualizar tabelas.

A

ViniGodoy:
Leia o link da minha assinatura sobre TableModel.

Com o DefaultTableModel, será muito mais difícil entender como funcionam recursos como esse, de atualizar tabelas.

Obrigado pela dica, vou analisar um pouco mais, agora o meu tempo esta um pouco corrido, deixa eu perguntar, quando eu resolver esse problema do tópico que criei, é preciso fazer alguma coisa tipo marcar o fórum como resolvido ou algo assim? ou não precisa fazer nada, é que sou novo no fórum.

Mudando um pouco de assunto, qual ferramenta vcs usam para trabalhar com java, (NETBEANS, ECLIPSE OU OUTRO), é que vejo os códigos postados em outros tópicos indicando linha por linha tudo organizado, e o que eu postei está tudo bagunçado, em qual formato vcs exportam o código para postar nos fóruns ou qual programa vcs utilizam? Obrigado.

ViniGodoy

Dá uma lida:
http://www.guj.com.br/posts/list/50115.java

Criado 2 de novembro de 2010
Ultima resposta 3 de nov. de 2010
Respostas 3
Participantes 2