Error in Change - Java and Mysql method

Asked

Viewed 126 times

0

Java masters, I’m working on a college project, using MVC layers, and I’m having trouble with the alterarClient method. When I click the Change button on the form, it sends a message saying that the client has been successfully changed, but when searching the changed client, it did not make the change. I would like to know where I am going wrong. Below are my classes:

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();
     }
}

Class Clientedto:

/*
 * 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 Change Customer does not work, who can help, I thank you in advance.

1 answer

0

Opa, tranquil?

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

I believe there are opportunities for it to work if you make the above-mentioned change, I think it’s worth the test and still to use in future codes.

Another tip regarding your SQL connection would be to use connection pool (read on the Apache DBCP2) to make the connection "persistent" (in constant activity) and cached with Preparedstatements. I strongly recommend that you research on such a subject.

From now on I hope I’ve helped.

Hug,
Pitter Thog.

  • Good morning Pitter, I will take a look at this topic, and the above method did not work, still not updating the data in the table. Very grateful for the attention.

  • Hello everyone, I found the error, in the Customer Class, I am putting the cli_id as the first item in the search, and in reality it is the last item, ie the number 9.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.