Error in the Change method - Java and MySQL

0

Java masters, I'm working on a college project, using MVC layers, and I'm having problems with the client-change method. When I click the Change button on the form, it sends a message saying that the client has changed successfully, but when searching for the changed client, it did not make the change. I wonder where I'm going wrong. Here are my classes below:

MySQL Connection Class:

/*


* To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.uniplan.DAL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Montesuma Oliveira
 */
public class ConexaoMySQL {
     public Connection con;
     public PreparedStatement ps;
     public ResultSet rs;
     public String sql;
     public void abrirBD()throws Exception
     {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/ipil_ltda";
        String user = "root";//Seu nome de usuário.
        String password = "uniplan";  //Sua senha.
        con = DriverManager.getConnection(url, user, password);
     }
    public void fecharBD() throws Exception
    {
        if(con != null)
        {
            con.close();
        }
    }    
}

Class ClienteDAL:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.uniplan.DAL;

import br.uniplan.DTO.ClienteDTO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Montesuma Oliveira */
public class ClienteDAL extends ConexaoMySQL {

    public void incluirCliente(ClienteDTO cliente) throws Exception
    {
        //Prepara a conexão com o MySQL
        abrirBD();
        sql = "INSERT INTO clientes (cli_nome, cli_dt_inclusao, cli_endereco, cli_bairro, cli_email, cli_tel, cli_cidade, cli_uf) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
        ps = con.prepareStatement(sql);
        //Busca os valores da classe clientesDTO
        //ps.setLong(1, cliente.getCli_id());
        ps.setString(1, cliente.getCli_nome());
        ps.setDate(2, new java.sql.Date(cliente.getCli_dt_inclusao().getTime()));
        ps.setString(3, cliente.getCli_endereco());
        ps.setString(4, cliente.getCli_bairro());
        ps.setString(5, cliente.getCli_email());
        ps.setString(6, cliente.getCli_tel());
        ps.setString(7, cliente.getCli_cidade());
        ps.setString(8, cliente.getCli_uf());
        ps.execute();
        fecharBD();
    }
    public ClienteDTO selecionarClientePorID(Integer cli_id)throws Exception
    {
        abrirBD();
        sql = "SELECT * FROM clientes WHERE cli_id=?";
        ps = con.prepareStatement(sql);
        ps.setInt(1, cli_id);
        rs = ps.executeQuery();
        ClienteDTO cliente = new ClienteDTO();
        if(rs.next())
        {
            cliente.setCli_id(rs.getInt("cli_id"));
            cliente.setCli_nome(rs.getString("cli_nome"));
            cliente.setCli_dt_inclusao(rs.getDate("cli_dt_inclusao"));
            cliente.setCli_endereco(rs.getString("cli_endereco"));
            cliente.setCli_bairro(rs.getString("cli_bairro"));
            cliente.setCli_email(rs.getString("cli_email"));
            cliente.setCli_tel(rs.getString("cli_tel"));
            cliente.setCli_cidade(rs.getString("cli_cidade"));
            cliente.setCli_uf(rs.getString("cli_uf"));
            fecharBD();            
        }
        return cliente;
    }
    //Método que vai selecionar todos os clientes no nosso Banco de Dados
    //e ordenar por nome do cliente
     public List selecionarListaClientes() throws Exception
     {
         abrirBD();
         sql = "SELECT * FROM clientes ORDER BY cli_nome";
         ps = con.prepareStatement(sql);
         rs = ps.executeQuery();
         List listaClientes = new ArrayList();
         while(rs.next())
         {
             ClienteDTO cliente = new ClienteDTO();
             cliente.setCli_id(rs.getInt("cli_id"));
             cliente.setCli_nome(rs.getString("cli_nome"));
             cliente.setCli_dt_inclusao(rs.getDate("cli_dt_inclusao"));
             cliente.setCli_endereco(rs.getString("cli_endereco"));
             cliente.setCli_bairro(rs.getString("cli_bairro"));
             cliente.setCli_email(rs.getString("cli_email"));
             cliente.setCli_tel(rs.getString("cli_tel"));
             cliente.setCli_cidade(rs.getString("cli_cidade"));
             cliente.setCli_uf(rs.getString("cli_uf"));
             listaClientes.add(cliente);         
         }
         fecharBD();
         return listaClientes;
     }
     //Método que vai fazer as alterações necessárias nos dados dos clientes
     //selecionados por seu código no nosso Banco de Dados
     public void alterarCliente(ClienteDTO cliente) throws Exception
     {
         abrirBD();         
         sql = "UPDATE clientes SET cli_nome = ?, cli_dt_inclusao = ?, cli_endereco = ?, cli_bairro = ?, cli_email = ?, cli_tel = ?, cli_cidade = ?, cli_uf = ? WHERE cli_id = ?";
         ps = con.prepareStatement(sql);
         ps.setLong(1, cliente.getCli_id());
         ps.setString(2, cliente.getCli_nome());
         ps.setDate(3, new java.sql.Date(cliente.getCli_dt_inclusao().getTime()));
         ps.setString(4, cliente.getCli_endereco());
         ps.setString(5, cliente.getCli_bairro());
         ps.setString(6, cliente.getCli_email());
         ps.setString(7, cliente.getCli_tel());
         ps.setString(8, cliente.getCli_cidade());
         ps.setString(9, cliente.getCli_uf());
         ps.execute();
         fecharBD();
     }
     public void excluirCliente(Integer cli_id) throws Exception
     {
         abrirBD();
         sql = "DELETE FROM clientes WHERE cli_id=?";
         ps = con.prepareStatement(sql);
         ps.setInt(1, cli_id);
         ps.execute();
         fecharBD();
     }
}

ClientDTO class:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.uniplan.DTO;

import java.util.Date;

/**
 *
 * @author Montesuma Oliveira
*/
public class ClienteDTO {
    private long cli_id;
    private String cli_nome;
    private Date cli_dt_inclusao;
    private String cli_endereco;
    private String cli_bairro;
    private String cli_email;
    private String cli_tel;
    private String cli_cidade;
    private String cli_uf;

    public long getCli_id()
    {
        return cli_id;
    }    
    public void setCli_id(int cli_id)
    {
        this.cli_id = cli_id;
    } 

    public String getCli_nome()
    {
        return cli_nome;
    }    
    public void setCli_nome(String cli_nome)
    {
        this.cli_nome = cli_nome;
    }

    public Date getCli_dt_inclusao()
    {
        return this.cli_dt_inclusao;
    }    
    public void setCli_dt_inclusao(Date cli_dt_inclusao)
    {
        this.cli_dt_inclusao = cli_dt_inclusao;
    }

    public String getCli_endereco()
    {
        return cli_endereco;
    }    
    public void setCli_endereco(String cli_endereco)
    {
        this.cli_endereco = cli_endereco;
    }

    public String getCli_bairro()
    {
        return cli_bairro;
    }    
    public void setCli_bairro(String cli_bairro)
    {
        this.cli_bairro = cli_bairro;
    }

    public String getCli_email()
    {
        return cli_email;
    }
    public void setCli_email(String cli_email)
    {
        this.cli_email = cli_email;
    }    

    public String getCli_tel()
    {
        return cli_tel;
    }
    public void setCli_tel(String cli_tel)
    {
        this.cli_tel = cli_tel;
    }

    public String getCli_cidade()
    {
        return cli_cidade;
    }
    public void setCli_cidade(String cli_cidade)
    {
        this.cli_cidade = cli_cidade;
    }

    public String getCli_uf()
    {
        return cli_uf;
    }
    public void setCli_uf(String cli_uf)
    {
        this.cli_uf = cli_uf;
    }

}

Change Client Button Code:

private void btnAlterarCliActionPerformed(java.awt.event.ActionEvent evt) {                                              
    // TODO add your handling code here:
     // fazendo a validação dos dados, o método isEmpty que devolve true se a String for vazia ou false se a mesma nã estiver vazia
    if ((txtNomeCli.getText().isEmpty()) || (ftfDtInclusaoCli.getText().isEmpty()) || (txtEnderecoCli.getText().isEmpty()) 
            || (txtBairroCli.getText().isEmpty()) || (ftfTelCli.getText().isEmpty()) || (txtCidadeCli.getText().isEmpty()) 
            || (txtUFCli.getText().isEmpty()))
    {
        JOptionPane.showMessageDialog(null, "Verifique Se Tem Algum Campo Vazio !!!!");
        //O cursor do mouse vai se posicionado no campo Código do Cliente
        txtCodigoCli.requestFocus();
    }
    else 
    {
        // instanciando a classe ClientesDTO do pacote DTO e criando seu objeto cliente
        ClienteDTO cliente = new ClienteDTO();
        // Instancia a classe ClienteDAL 
        ClienteDAL dal = new ClienteDAL();
         //Formatando a data
        SimpleDateFormat dti = new SimpleDateFormat("dd/MM/yyyy");
        cliente.setCli_id(Integer.parseInt(txtCodigoCli.getText()));
        cliente.setCli_nome(txtNomeCli.getText());
        //Verifica se a data esta formatada e faz o tratamento do erro de Parseamento
        try
        {
            cliente.setCli_dt_inclusao(new java.sql.Date(dti.parse(ftfDtInclusaoCli.getText()).getTime()));
        }
        catch (ParseException ex)
        {

        }
        //Mostra os dados que estão gravados na tabela Clientes
        cliente.setCli_endereco(txtEnderecoCli.getText());
        cliente.setCli_bairro(txtBairroCli.getText());
        cliente.setCli_email(txtEmailCli.getText());
        cliente.setCli_tel(ftfTelCli.getText());
        cliente.setCli_cidade(txtCidadeCli.getText());
        cliente.setCli_uf(txtUFCli.getText());
        try
        {
            // Chama o método alterarCliente da Classe ClienteDAL
            dal.alterarCliente(cliente);
        }
        catch (Exception ex)
        {
            Logger.getLogger(frmClientes.class.getName()).log(Level.SEVERE, null, ex);
        }
        JOptionPane.showMessageDialog(null, "Cliente " + cliente.getCli_nome() + " Alterado Com Sucesso !!!!");
    }        
}

All other methods are working, only the Change Client does not work, who can help, I thank you in advance.

    
asked by anonymous 13.10.2016 / 03:40

1 answer

0

Oops, easy?

I noticed that in the method you update the data in the clientes table, you are using the method execute() , once, executeUpdate() is recommended.

I believe there are opportunities for it to work if you make the above change, I think it's worth the test and still for future code use.

Another tip regarding your SQL connection would be to use connection pool (read about Apache DBCP2 ) to make the connection "persistent" (in constant activity) and with Cache of PreparedStatements. I strongly recommend that you research this subject.

I hope to have helped.

Strong hug,
Pitter Thog.

    
13.10.2016 / 17:34