Problemas ao fazer uma atualização no Banco de dados

galera estou com um problema na hora de fazer um update no meu banco de dados

metedo para alterar em ClienteController

public void atualizarClienteCpf(Cliente c) throws Exception{
    DAOCliente dc = new DAOCliente();
    dc.atualizarClienteCpf(c);
    JOptionPane.showMessageDialog(
    null, 
            "Cliente Alterado com Sucesso!!");
}

DAOCliente

    public void atualizarClienteCpf(Cliente c) throws Exception{
    sql = "UPDATE CLIENTE SET ID = "+c.getIdCliente()+", NOME = '"+c.getNome()+"',CPF = '"+c.getCpf()+"'"
            + ",RG = '"+c.getRg()+"',CELULAR = '"+c.getCelular()+"'"
            + ",ENDERECO = '"+c.getEndereco()+"',CIDADE = '"+c.getCidade()+"',ESTADO = '"+c.getEstado()+"',"
            + "WHERE CPF = '"+c.getCpf()+"' ";
    
    stm.executeUpdate(sql);
    stm.close();
    con.close();
    
}

jFrame Inserir dados na tabela

public class GuiAtualizarCliente extends javax.swing.JInternalFrame {
 DefaultTableModel dtm = new DefaultTableModel(new Object[][]{},
new Object[]{"ID","NOME","CPF","RG","CELULAR","ENDERECO","CIDADE","ESTADO",});

public GuiAtualizarCliente() throws Exception {
    initComponents();       
    
}
 private void inserirdados() throws Exception{ 
        tabela_ClienteCpf.setModel(dtm);
        ClienteController cc = new ClienteController();
        ArrayList<Cliente> cliente = new ArrayList<>();
        Cliente c = new Cliente();
        c.setCpf(jtf_BuscaPorCliente.getText());
        cliente = cc.buscarClienteCpf(c);
        cc.buscarClienteCpf(c);
        
    
       dtm.setNumRows(0);
    
       for(int i=0; i < cliente.size(); i++){
        
            dtm.addRow(new String[]{
                           
            Integer.toString(cliente.get(i).getIdCliente()),
            cliente.get(i).getNome(),
            cliente.get(i).getCpf(),
            cliente.get(i).getRg(),
            cliente.get(i).getCelular(),
            cliente.get(i).getEndereco(),
            cliente.get(i).getCidade(),
            cliente.get(i).getEstado()
            
        });
        
    }
}

Executar o update no banco de dados

private void atualizaCliente()throws SQLException{
       try{
        
        ClienteController cc = new ClienteController();
        Cliente c = new Cliente();   
        
        
        c.setNome(jtf_Nome.getText());
        c.setCpf(jtf_Cpf.getText());
        c.setRg(jtf_Rg.getText());
        c.setCelular(jtf_Celular.getText());
        c.setEndereco(jtf_Endereco.getText());
        c.setCidade(jtf_Cidade.getText());
        c.setEstado((String) jcb_Estado.getModel().getSelectedItem());
        
        jtf_Nome.setText("");
        jtf_Cpf.setText("");
        jtf_Rg.setText("");
        jtf_Celular.setText("");
        jtf_Endereco.setText("");
        jtf_Cidade.setText("");
        jcb_Estado.setToolTipText("");
        
        cc.atualizarClienteCpf(c);
       
       }catch(Exception ex){
           JOptionPane.showMessageDialog(
                   null,
                   "Algum erro ocorreu: " + ex.getMessage());
       }
       
}

quando termina a busca e popula a tabela com um click os dados da tabela são inserido nas JTextFields para poder ser feita as alterações porem quando eu clico no botão de alterar retorna uma mensagem de erro.

you have an error in your SQL syntax check the manual corresponds to your MariaDB server version for the right syntax to use near “WHERE CPF = 02156649759” at line 1 (cpf ficticio).

Você tem uma vírgula logo após o getEstado(), o que causa um erro de sintaxe SQL.

Basta remover a vírgula que antecede a cláusula WHERE que já deve funcionar.

Caramba obrigado Jonathan era só esse o problema
Valeu mesmo !!