Atualizar tabela

16 respostas
A

Gostaria de alterar um campo do banco de dados através de uma jtable.

Eu tenho uma TableModel, Dao.

Codigo Classe Dao Metodo Atualizar:

public void atualizar(Produto despesa) {
      conectar();
      String com = "UPDATE Produto SET " +
                   "despesa= '" + despesa.getDespesa() + "'," +
   	   	   "estabelecimento= '" + despesa.getEstabelecimento() + "'," +
   	   	   "datadadespesa='" + despesa.getDatadaDespesa() + "'," +
   	   	   "valordadespesa='" + despesa.getValordaDespesa() + "'," +
   	   	   "formadepagamento='" + despesa.getFormadePagamento() + "'," +
                   "datacheque='" + despesa.getDataCheque() + "' " +
                   "numerocheque='" + despesa.getNumeroCheque() + "' " +
                   "mes='" + despesa.getMes() + "' " +
   	   	   " WHERE despesa = '" + despesa.getDespesa() + "'";
      try {
         comando.executeUpdate(com); 
         JOptionPane.showMessageDialog(null,"Operação realizada com sucesso!");
      } catch (SQLException e){
         e.printStackTrace();
      } finally {
         fechar();
      }
   }

Segue cpodigo que fiz para atualizar meu banco de dados:

private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                            
  
      if(evt.getSource()==btAlterar){  
  
               int row = tblBanco.getSelectedRow();  
               if (row != -1) {  
        despesa.setDespesa(tblBanco.getColumnName(0));  
        despesa.setEstabelecimento(tblBanco.getColumnName(1));  
        despesa.setDatadaDespesa(tblBanco.getColumnName(2));  
        despesa.setValordaDespesa(tblBanco.getColumnName(3));  
        despesa.setDataCheque(tblBanco.getColumnName(4));  
        despesa.setNumeroCheque(tblBanco.getColumnName(5));  
        despesa.setFormadePagamento(tblBanco.getColumnName(6));  
        daoProduto.atualizar(despesa);  
  
               } else {  
                   // mostrar advertência?  
               }  
  
             PreencherTabela();  
       }  
           
   }

Mas deu erro:

ava.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na express?o de consulta ''Forma de Pagamento' numerocheque='Data do Cheque' mes='null''.  
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)  
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)  
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)  
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)  
        at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)  
        at dao.DaoProduto.atualizar(DaoProduto.java:73)  
        at Tela_Principal.btAlterarActionPerformed(Tela_Principal.java:483)  
        at Tela_Principal.access$1100(Tela_Principal.java:7)  
        at Tela_Principal$13.actionPerformed(Tela_Principal.java:191)  
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)  
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)  
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)  
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)  
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)  
        at java.awt.Component.processMouseEvent(Component.java:6267)  
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)  
        at java.awt.Component.processEvent(Component.java:6032)  
        at java.awt.Container.processEvent(Container.java:2041)  
        at java.awt.Component.dispatchEventImpl(Component.java:4630)  
        at java.awt.Container.dispatchEventImpl(Container.java:2099)  
        at java.awt.Component.dispatchEvent(Component.java:4460)  
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)  
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)  
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)  
        at java.awt.Container.dispatchEventImpl(Container.java:2085)  
        at java.awt.Window.dispatchEventImpl(Window.java:2478)  
        at java.awt.Component.dispatchEvent(Component.java:4460)  
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)  
Conexão Fechada  
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)  
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)  
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)  
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)  
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)  
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)  
Conectado!

16 Respostas

A
F

alucardmaas:

-

Pelo visto vc ta mais perdido q cego em tiroteio hein…
Ja respondi como fazer nesse post: http://www.guj.com.br/java/265824-pessoal-duvida-jtable

Novamente vou dizer: Nao concatene Strings de SQL, use PreparedStatement.
Tendo o seu TableModel como eu e o Vini explicamos no post anterior q vc fez, basta pegar o objeto e envia-lo para o Update/Delete e fazer o q precisa
Pq vc ta usando no ActionEvent um evt.getSource() ??? É um botao para fazer tudo ? Nao faz sentido isso, achei estranho.

Mas é isso, como vc esta mais perdido q azeitona na boca de banguelo é melhor dar mais uma estudada do que tentar sair fazendo as coisas sem nem ter base nenhuma pois isso é mais simples q tirar doce da boca de crianca.

Recomendo ler a Apostila FJ11,FJ21 e siga os links

http://www.javasimples.com.br/swing-awt/death-to-defaulttablemodel-abstracttablemodel-rulez
http://www.guj.com.br/articles/147

t+ e boa sorte.

A

Fernando, mas vc não pode me passar uma base baseado no meu codigo

A

em relação a classe Dao vou alterar, mas para isto queria ter uma base de como poder atualizar, o Vini postou como mostrar o banco na tabela que foi este codigo:

List<Produto> lista = daoProduto.buscarTodos();
                ProdutoTableModel tabela = new ProdutoTableModel(lista);
                tblBanco.setModel(tabela);

Você poderia dar uma força para atualizar

já consegui exluir só falata isto é que como sou iniciante pelo menos uma base, ou um exmplo pratico.

Fico agradecido

F

alucardmaas:
em relação a classe Dao vou alterar, mas para isto queria ter uma base de como poder atualizar, o Vini postou como mostrar o banco na tabela que foi este codigo:

List<Produto> lista = daoProduto.buscarTodos();
                ProdutoTableModel tabela = new ProdutoTableModel(lista);
                tblBanco.setModel(tabela);

Você poderia dar uma força para atualizar

já consegui exluir só falata isto é que como sou iniciante pelo menos uma base, ou um exmplo pratico.

Fico agradecido

Veja o projeto q estou te mandando, basta vc adicionar no ODBC a fonte de dados Produtos e apontar para o arquivo produtos.mdb dentro da pasta db na raiz do projeto, depois adicione o projeto a sua IDE, eu uso NetBeans entaum fiz tudo usando NetBeans. Se quiser usar Eclipse basta vc colocar no workspace e criar um projeto com o msm nome ou ate msm importar. No Eclipse vc pode instalar o WindowBuilder.

O metodo de insert vc implementa, se quiser.

t+ e boa sorte.

A

Bacana adicionei no meu projeto so o codigo:

public void updateRow(Produtos p, int row){
        listaProdutos.set(row, p);
        fireTableDataChanged();
    }

ficou assim:

package tabela;


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import javax.swing.table.AbstractTableModel;
import model.Produto;

public class ProdutoTableModel extends AbstractTableModel {

    //constantes que vão representar as colunas
    //(só para facilitar o entendimento do código)
    private final int COL_Despesa = 0;
    private final int COL_Estabelecimento = 1;
    private final int COL_DataDespesa = 2;
    private final int COL_ValorDespesa = 3;
    private final int COL_FormaPagamento = 4;
    private final int COL_DataCheque = 5;
    private final int COL_NumeroCheque = 6;

    //lista dos produtos que serão exibidos
   private java.util.List<model.Produto> produtos; 

    public ProdutoTableModel() {
        produtos = new ArrayList();
    }

   public ProdutoTableModel(java.util.List<model.Produto> lista) {
        this();
        produtos.addAll(lista);
    }

    public int getRowCount() {
        //cada produto na lista será uma linha
        return produtos.size();
    }

    public int getColumnCount() {
        //vamos exibir só Nome e Quantidade, então são 7 colunas
        return 7;
    }

    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna
        if (column == COL_Despesa) {
            return "Despesa";
        } else if (column == COL_Estabelecimento) {
            return "Estabelecimento";
        }
          else if (column == COL_DataDespesa) {
            return "Data da Despesa";
        }
          else if (column == COL_ValorDespesa) {
            return "Valor da Despesa";
        }
          else if (column == COL_FormaPagamento) {
            return "Forma de Pagamento";
        }
          else if (column == COL_DataCheque) {
            return "Data do Cheque";
        }
          else if (column == COL_NumeroCheque) {
            return "Numero do Cheque";
        }
        return "";
    }

    @Override
    public Class getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna
        if (columnIndex == COL_Despesa) {
            return String.class;
        } else if (columnIndex == COL_Estabelecimento) {
            return String.class;
        }
          else if (columnIndex == COL_DataDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_ValorDespesa) {
            return String.class;
        }
          else if (columnIndex == COL_FormaPagamento) {
            return String.class;
        }
          else if (columnIndex == COL_DataCheque) {
            return String.class;
        }
          else if (columnIndex == COL_NumeroCheque) {
            return String.class;
        }
        return String.class;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha
        Produto p = produtos.get(rowIndex);//esta dando erro aqui

        //verifica qual valor deve ser retornado
        if (columnIndex == COL_Despesa) {
            return p.getDespesa();
        } else if (columnIndex == COL_Estabelecimento) {
            return p.getEstabelecimento();
        }
          else if (columnIndex == COL_DataDespesa) {
            return p.getDatadaDespesa();
        }
          else if (columnIndex == COL_ValorDespesa) {
            return p.getValordaDespesa();
        }
          else if (columnIndex == COL_FormaPagamento) {
            return p.getFormadePagamento();
        }
          else if (columnIndex == COL_DataCheque) {
            return p.getDataCheque();
        }
          else if (columnIndex == COL_NumeroCheque) {
            return p.getNumeroCheque();
        }
        return "";
    }
        @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas vão ser editáveis, entao retorna true pra todas
        return true;
    }

   @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha
        Produto p = produtos.get(rowIndex);//esta dando erro aqui

        //verifica qual valor vai ser alterado
        if (columnIndex == COL_Despesa) {
            p.setDespesa(aValue.toString());
        } else if (columnIndex == COL_Estabelecimento) {
            p.setEstabelecimento(aValue.toString());
        }
          else if (columnIndex == COL_DataDespesa) {
            p.setDatadaDespesa(aValue.toString());
        }
          else if (columnIndex == COL_ValorDespesa) {
            p.setValordaDespesa(aValue.toString());
        }
          else if (columnIndex == COL_FormaPagamento) {
            p.setFormadePagamento(aValue.toString());
        }
          else if (columnIndex == COL_DataCheque) {
            p.setDataCheque(aValue.toString());
        }
          else if (columnIndex == COL_NumeroCheque) {
            p.setNumeroCheque(aValue.toString());
        }
        //avisa que os dados mudaram
        fireTableDataChanged();
    }

    //-----------------------------------------------------
    //Métodos personalizados
    //-----------------------------------------------------
    public void inserir(Produto p) {
        produtos.add(p);

        fireTableDataChanged();
    }

    public void excluir(String pos) {
        produtos.remove(pos);

        fireTableDataChanged();
    }
    public void updateRow(Produto p, int row){  // o codigo que vc passou esta aqui     <..................................................
        produtos.set(row, p);
        fireTableDataChanged();
    }

    public void excluir(Produto p) {
        produtos.remove(p);

        fireTableDataChanged();
    }

    public void ordenarPorValor() {
        //ordena pelo nome
        Collections.sort(produtos, new Comparator<Produto>() {//esta dando erro aqui no sort

            public int compare(Produto o1, Produto o2) {
                return o1.getValordaDespesa().compareTo(o2.getValordaDespesa());
            }
        });
        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }
    

    public void misturar() {
        //mistura a lista
        Collections.shuffle(produtos);

        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }

    public Produto getCliente(int pos) {
        if (pos >= produtos.size()) {
            return null;
        }

        return produtos.get(pos);//esta dando erro  aqui
    }
}

agora como eu chamo isto no codigo principal Leonardo

E obrigado pela força

A

Poxa Leonardo ve se estou no caminho certo

if(tblBanco.getSelectedRow() >= 0){
        
            int row = tblBanco.getSelectedRow();
            Produto p = dtm.getProduto(row);    nesta linha Leonardo esta dando ERRO <.................................................       
            
            //crio novo objeto para alteracao
            Produto pUpdate = new Produto();
            despesa.setDespesa(p.getDespesa());
            despesa.setEstabelecimento(p.getEstabelecimento());
            despesa.setDatadaDespesa(p.getDatadaDespesa());
            despesa.setValordaDespesa(p.getValordaDespesa());
            despesa.setDataCheque(p.getDataCheque());
            despesa.setNumeroCheque(p.getNumeroCheque());
            despesa.setFormadePagamento(p.getFormadePagamento());
             new DaoProduto().atualizar(despesa);
            dtm.updateRow(despesa,row);
        
    }else{
        JOptionPane.showMessageDialog(null, "Selecione a linha q deseja alterar","Alterar",JOptionPane.WARNING_MESSAGE);
    }
          
    }

Esta Dando erro na variavel DTM tenho que adaptar ao meu codigo qual seria

A

Mudei mas olha o erro que deu:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code
        at Tela_Principal.btAlterarActionPerformed(Tela_Principal.java:476)
        at Tela_Principal.access$1100(Tela_Principal.java:8)
        at Tela_Principal$13.actionPerformed(Tela_Principal.java:193)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
A

a linha 476 é está

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

        if(tblBanco.getSelectedRow() >= 0){
            int row = tblBanco.getSelectedRow();
            Produto p = dtm.getProduto(row); //         linha 476

            despesa.setDespesa(p.getDespesa());
            despesa.setEstabelecimento(p.getEstabelecimento());
            despesa.setDatadaDespesa(p.getDatadaDespesa());
            despesa.setValordaDespesa(p.getValordaDespesa());
            despesa.setDataCheque(p.getDataCheque());
            despesa.setNumeroCheque(p.getNumeroCheque());
            despesa.setFormadePagamento(p.getFormadePagamento());
            dtm.updateRow(despesa,row);
            daoProduto.atualizar(despesa);

    }else{
        JOptionPane.showMessageDialog(null, "Selecione a linha q deseja alterar","Alterar",JOptionPane.WARNING_MESSAGE);
    }
          
    }
F
alucardmaas:
a linha 476 é está
private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                          

        if(tblBanco.getSelectedRow() >= 0){
            int row = tblBanco.getSelectedRow();
            Produto p = dtm.getProduto(row); //         linha 476

            despesa.setDespesa(p.getDespesa());
            despesa.setEstabelecimento(p.getEstabelecimento());
            despesa.setDatadaDespesa(p.getDatadaDespesa());
            despesa.setValordaDespesa(p.getValordaDespesa());
            despesa.setDataCheque(p.getDataCheque());
            despesa.setNumeroCheque(p.getNumeroCheque());
            despesa.setFormadePagamento(p.getFormadePagamento());
            dtm.updateRow(despesa,row);
            daoProduto.atualizar(despesa);

    }else{
        JOptionPane.showMessageDialog(null, "Selecione a linha q deseja alterar","Alterar",JOptionPane.WARNING_MESSAGE);
    }
          
    }

Mano, na boa, se tu não abrir e olhar como eu fiz o projeto de exemplo q mandei não vai entender como se faz. Estou aqui pra ajudar, mas você tem q se ajudar também. Sem um pouco de estudos, não vai conseguir.

E quem é Leonardo ?

t+ e boa sorte.

A

Sorry Fernando eu olhei como vc fez a unica diferença do seu projeto para o meu é a classe DAO

A

A sua classe Dao está mellhor vou adptar meu codigo nela

A

Fernando reescrevi tudo dinovo o codigo baseado no seu:

Esta dando este Erro:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code
        at Tela_Principal.btAlterarActionPerformed(Tela_Principal.java:468)
        at Tela_Principal.access$1100(Tela_Principal.java:8)
        at Tela_Principal$13.actionPerformed(Tela_Principal.java:188)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

o erro está nesta linha:

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

        if(tblBanco.getSelectedRow() >= 0){
        String descricao = JOptionPane.showInputDialog(null, "Nova Descricao", "Descricao", JOptionPane.INFORMATION_MESSAGE);
        if(descricao != null && !descricao.trim().isEmpty()){
            int row = tblBanco.getSelectedRow();
            Produto p = dtm.getProduto(row); // Aqui está o erro Fernando

            //crio novo objeto para alteracao
            Produto pUpdate = new Produto();
            despesa.setDespesa(p.getDespesa());
            despesa.setEstabelecimento(p.getEstabelecimento());
            despesa.setDatadaDespesa(p.getDatadaDespesa());
            despesa.setValordaDespesa(p.getValordaDespesa());
            despesa.setDataCheque(p.getDataCheque());
            despesa.setNumeroCheque(p.getNumeroCheque());
            despesa.setFormadePagamento(p.getFormadePagamento());
            dtm.updateRow(pUpdate,row);
        }
    }else{
        JOptionPane.showMessageDialog(null, "Selecione a linha q deseja alterar","Alterar",JOptionPane.WARNING_MESSAGE);
    }
               
    }

Minha Classe DAO:

package ProdutosDAO;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import model.Produto;
import dao.banco.ConFactory;

public class ProdutosDAO {

      private Connection con;

    public ProdutosDAO(){
        try {
            this.con = ConFactory.getConnection();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), "Connection Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    public List<Produto> getProdutos(){

        List<Produto> lista = new ArrayList<Produto>();

        try {
           PreparedStatement stm = this.con.prepareStatement("SELECT * FROM produto");
           ResultSet rs = stm.executeQuery();
           while(rs.next()){
               Produto p = new Produto();
               p.setDespesa(rs.getString("despesa"));
               p.setEstabelecimento(rs.getString("estabelecimento"));
               p.setDatadaDespesa(rs.getString("datadadespesa"));
               p.setValordaDespesa(rs.getString("valordadespesa"));
               p.setFormadePagamento(rs.getString("formadepagamento"));
               p.setDataCheque(rs.getString("datacheque"));
               p.setNumeroCheque(rs.getString("numerocheque"));
               lista.add(p);
           }
           rs.close();
           stm.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), "Select Error", JOptionPane.ERROR_MESSAGE);
        }
        return lista;
    }

    public void update(Produto p){
        
        // Faz Update(Alteracao) dos produtos
         
        try {
            PreparedStatement stm = this.con.prepareStatement("UPDATE produto SET despesa = ?, estabelecimento = ?, datadadespesa = ?, valordadespesa = ?, formadepagamento = ?, datacheque = ? , numerocheque = ? "
                                                                                + "WHERE despesa = ?");
            stm.setString(1, p.getDespesa());
            stm.setString(2, p.getEstabelecimento());
            stm.setString(3, p.getDatadaDespesa());
            stm.setString(4, p.getValordaDespesa());
            stm.setString(5, p.getFormadePagamento());
            stm.setString(6, p.getDataCheque());
            stm.setString(7, p.getNumeroCheque());
            stm.executeUpdate();
            stm.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), "Update Error", JOptionPane.ERROR_MESSAGE);
        }
    }


    public void delete(Produto p){
        try {
            PreparedStatement stm = this.con.prepareStatement("DELETE FROM produto WHERE despesa = ?");
            stm.setString(1, p.getDespesa());
            stm.executeUpdate();
            stm.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), "Delete Error", JOptionPane.ERROR_MESSAGE);
        }

    };

    public void insert(Produto p){
    
    
    };





}

Minha Classe TableModel:

package tabela;


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import model.Produto;

/**
 *
 * @author fernegao
 */
public class ProdutoTableModel extends AbstractTableModel{
    private List<Produto> listaProdutos;
    private String[] colunas = {"Despesa","Estabelecimento","Data da Despesa","Valor da Despesa","Forma de Pagamento","Data do Cheque","Numero do Cheque"};

    public ProdutoTableModel(){
        listaProdutos = new ArrayList<Produto>();
    }

    public ProdutoTableModel(List<Produto> lista){
        this();
        listaProdutos.addAll(lista);
    }

    @Override
    public int getRowCount() {
        return listaProdutos.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
     public String getColumnName(int column){
        if(colunas[column] == "Despesa"){
            return "Despesa";
        }else if(colunas[column] == "Estabelecimento"){
            return "Estabelecimento";
        }else if(colunas[column] == "Data da Despesa"){
            return "Data da Despesa";
        }else if(colunas[column] == "Valor da Despesa"){
            return "Valor da Despesa";
        }else if(colunas[column] == "Forma de Pagamento"){
            return "Forma de Pagamento";
        }else if(colunas[column] == "Data do Cheque"){
            return "Data do Cheque";
        }else if(colunas[column] == "Numero do Cheque"){
            return "Numero do Cheque";
        }
        return new String();
    }

    @Override
     public Class getColumnClass(int column){
         //private String[] colunas = {" ","Data","Hora","Aviso","Terminal","Usuário"};
         if(colunas[column] == "Despesa"){
             return String.class;
         }
         else if(colunas[column] == "Forma de Pagamento"){
            return String.class;
         }else if(colunas[column] == "Data da Despesa"){
             return String.class;         }
         else if(colunas[column] == "Valor da Despesa"){
             return String.class;         }
         else if(colunas[column] == "Forma de Pagamento"){
             return String.class;         }
         else if(colunas[column] == "Data do Cheque"){
             return String.class;
         }
         else if(colunas[column] == "Numero do Cheque"){
             return String.class;
         }
        return String.class;
    }


    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Produto p = listaProdutos.get(rowIndex);
        switch(columnIndex){
            case 0: return p.getDespesa();
            case 1: return p.getEstabelecimento();
            case 2: return p.getDatadaDespesa();
            case 3: return p.getValordaDespesa();
            case 4: return p.getFormadePagamento();
            case 5: return p.getDataCheque();
            case 6: return p.getNumeroCheque();

            default: return new String();
        }
    }

    public boolean isCellEditable(int row, int col){
        return false;
    }

    public void updateRow(Produto p, int row){
        listaProdutos.set(row, p);
        fireTableDataChanged();
    }

    public void removeRow(int row){
        listaProdutos.remove(row);
        fireTableDataChanged();
    }

    public Produto getProduto(int row){
        return listaProdutos.get(row);
    }

}

Por favor aonde está o erro.

A

a tabela esta atualizando normal, so falta alterar e excluir

A

Fernando não estou conseguindo achar o erro, acho que está no TableModel, mas eu não acho

Da uma olhada no meu arquivo por favor ou nas classe que postei para vc

A

Estou conseguindo Fernando ja esta excluindo agora so falta alterar, acho que o erro está na classe dao, vou postar o print do erro
Não Está dando erro nehum

Me ajudem

Codigo DAO:

public void update(Produtos p){

        // Faz Update(Alteracao) dos produtos

        try {
            PreparedStatement stm = this.con.prepareStatement("UPDATE produto SET despesa = ?, estabelecimento = ?, data da despesa = ?, valor da despesa = ?, forma de pagamento = ?, data cheque = ? , numero cheque = ? "
                                                                                + "WHERE despesa = ?");
            stm.setString(1, p.getDespesa());
            stm.setString(2, p.getEstabelecimento());
            stm.setString(3, p.getDatadaDespesa());
            stm.setString(4, p.getValordaDespesa());
            stm.setString(5, p.getFormadePagamento());
            stm.setString(6, p.getDataCheque());
            stm.setString(7, p.getNumeroCheque());
            stm.executeUpdate();
            stm.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), "Update Error", JOptionPane.ERROR_MESSAGE);
        }
    }


Criado 22 de fevereiro de 2012
Ultima resposta 23 de fev. de 2012
Respostas 16
Participantes 2