Update de registros no banco de dados MySql, não realiza a alteração

26 respostas
R

Boa tarde pessoal estou com o seguinte problema;

Estou fazendo um aplicativo java desktop, para o serviço da minha esposa, mais para aprender mesmo, então, no aplicativo tenho um form onde faço a edição do cadastro, que a classe "Clientes", tenho também o pacote "clientes", com as classes "ClienteBean" e "ClienteControl"

este é o codigo da Classe Clientes:

package br.com.sisfinanceira;


import br.com.sisfinanceira.clientes.EditaClientesBean;
import br.com.sisfinanceira.clientes.EditaClientesControl;
import br.com.sisfinanceira.listclientes.ListClienteBean;
import br.com.sisfinanceira.listclientes.ListClienteControl;
import com.mysql.jdbc.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;

/**
 *
 * @author Rafael
 */
public class Clientes extends javax.swing.JFrame {
    
   List<ListClienteBean> listclientes;
   List<EditaClientesBean> edita;
   PreparedStatement pstm;
   ResultSet rs;
  
    /** Creates new form Clientes */
    
    
    public Clientes() {
       initComponents();
    }
     
     public void mini(){
        this.dispose();
    }
    
    Principal principal;
    ListClientes lclientes;
    Clientes Edita;
    String tipoCadastro;
    String consultaCpf;

public void setCliente( ListClienteBean cliente) {  
    tfCodigo.setText(cliente.getCodigo().toString());    
    tfBairro.setText(cliente.getBairro());    
    tfNome.setText(cliente.getNome());      
    tfCep.setText(cliente.getCep());    
    tfCidade.setText(cliente.getCidade());    
    tfEndereco.setText(cliente.getEndereco());    
    tfTelefone.setText(cliente.getTelefone());    
    tfUF.setText(cliente.getUF());    
    tfDataEmprestimo.setText(cliente.getData_emprestimo());    
    tfNascimento.setText(cliente.getData_nascimento());    
    tfNumBeneficio.setText(cliente.getNumbeneficio());    
    tfSalario.setText(cliente.getSalario());    
    tfCpf.setText(cliente.getCpf());    
    tfNum.setText(cliente.getNum());    
    tfRg.setText(cliente.getRg());    
    tfTipoBeneficio.setText(cliente.getTipobeneficio());   
}  
    
    public void capturarDataSys(){  
      
    GregorianCalendar data = new GregorianCalendar(TimeZone.getTimeZone("GMT-3"),new Locale("pt_BR"));  
    Date d = data.getTime();  
    String dt[] = {String.valueOf(d.getDate()), String.valueOf((d.getMonth() + 1)), String.valueOf((d.getYear() + 1900))};  
    if (Integer.parseInt(dt[0]) < 10) {  
        dt[0] = "0" + dt[0];  
    }  
    if (Integer.parseInt(dt[1]) < 10) {  
        dt[1] = "0" + dt[1];  
    }  
    tfDataEmprestimo.setText(dt[0] + dt[1] + dt[2]);  
      
} 

    
    private void Voltar(){
        
        if(lclientes == null){
            lclientes = new ListClientes();
            lclientes.setVisible(true);
            mini();
        } else{
            lclientes.setVisible(true);
            lclientes.setState(JFrame.NORMAL);
        }
            
        }
    
    private void btVoltarActionPerformed(java.awt.event.ActionEvent evt) {                                         

        Voltar();     }                                        

  
    
    
    
     protected void alterarCliente(){
        if (verificarCampos() && verificarCpf()){
            EditaClientesBean cliente = new EditaClientesBean();
             cliente.setCodigo(tfCodigo.getComponentCount());
             cliente.setNome(tfNome.getText().trim());
             cliente.setEndereco(tfEndereco.getText().trim());
             cliente.setBairro(tfBairro.getText().trim());
             cliente.setCidade(tfCidade.getText().trim());
             cliente.setUf(tfUF.getText().trim());
             cliente.setCep(tfCep.getText().trim());
             cliente.setTelefone(tfTelefone.getText().trim());
             cliente.setNumbeneficio(tfNumBeneficio.getText().trim());
             cliente.setData_emprestimo(tfDataEmprestimo.getText().trim());
             cliente.setSalario(tfSalario.getText().trim());       
             cliente.setData_nascimento(tfNascimento.getText().trim());
             cliente.setTipobeneficio(tfTipoBeneficio.getText().trim());
             cliente.setRg(tfRg.getText().trim());
             cliente.setNum(tfNum.getText().trim());
             cliente.setCpf(tfCpf.getText().trim());
             EditaClientesControl c = new EditaClientesControl();
             c.alterarCliente(cliente);
             desabilitarCampos();
             tfCpf.setEditable(false);
        } else{
            JOptionPane.showMessageDialog(this, "Informe o nome do cliente!");
            tfNome.requestFocus();
        }
    }
    
     
     
     
     public void cadastraCliente(){
         
         if(verificarCampos()&& verificarCpf()){
             ListClienteBean cliente = new ListClienteBean();
             cliente.setNome(tfNome.getText().trim());
             cliente.setEndereco(tfEndereco.getText().trim());
             cliente.setBairro(tfBairro.getText().trim());
             cliente.setCidade(tfCidade.getText().trim());
             cliente.setUF(tfUF.getText().trim());
             cliente.setCep(tfCep.getText().trim());
             cliente.setTelefone(tfTelefone.getText().trim());
             cliente.setNumbeneficio(tfNumBeneficio.getText().trim());
             cliente.setData_emprestimo(tfDataEmprestimo.getText().trim());
             cliente.setSalario(tfSalario.getText().trim());       
             cliente.setData_nascimento(tfNascimento.getText().trim());
             cliente.setTipobeneficio(tfTipoBeneficio.getText().trim());
             cliente.setCpf(tfCpf.getText().trim());
             cliente.setRg(tfRg.getText().trim());
             cliente.setNum(tfNum.getText().trim());
             ListClienteControl c = new ListClienteControl();
             c.cadastrarCliente(cliente);
             JOptionPane.showMessageDialog(null, "Cliente Cadastrado Com sucesso!");
             capturarDataSys();
             desabilitarCampos();
             lclientes = new ListClientes();
             lclientes.setVisible(true);
             mini();
             
     }
}
     
     
     private boolean verificarCampos() {
         if(!tfNome.getText().trim().equals("")){
             return true;
         }
         return false;
     }
     
 
      
       protected boolean verificarCpf(){
        if (tfUF.getText().length() > 2)
            return false;
        return true;
    }
    
     private void habilitarCampos(){
         tfNome.setEditable(true);
        // tfCpf.setEditable(true);
         tfEndereco.setEditable(true);
         tfBairro.setEditable(true);
         tfCidade.setEditable(true);
         tfCep.setEditable(true);
         tfUF.setEditable(true);
         tfTelefone.setEditable(true);
         tfNumBeneficio.setEditable(true);
         tfTipoBeneficio.setEditable(true);
         //tfDataEmprestimo.setEditable(true);
         tfSalario.setEditable(true);
         tfNascimento.setEditable(true);
         tfRg.setEditable(true);
         tfNum.setEditable(true);
         btSalvar.setEnabled(true);
        // tfCodigo.setEditable(true);
     }
     
      private void desabilitarCampos(){
         tfNome.setEditable(false);
        // tfCpf.setEditable(false);
         tfEndereco.setEditable(false);
         tfBairro.setEditable(false);
         tfCidade.setEditable(false);
         tfCep.setEditable(false);
         tfUF.setEditable(false);
         tfTelefone.setEditable(false);
         tfNumBeneficio.setEditable(false);
         tfDataEmprestimo.setEditable(false);
         tfSalario.setEditable(false);
         tfNascimento.setEditable(false);
         tfRg.setEditable(false);
         tfNum.setEditable(false);
         tfTipoBeneficio.setEditable(false);
         btSalvar.setEnabled(false);
         
     }
      
      private void novoCliente(){
          habilitarCampos();
          capturarDataSys();
          verificaCpf();
          tfNome.setText("");
          tfEndereco.setText("");
          tfBairro.setText("");
          tfCidade.setText("");
          tfCep.setText("");
          tfUF.setText("");
          tfTelefone.setText("");
          tfNumBeneficio.setText("");
          tfDataEmprestimo.setText("");
          tfSalario.setText("");
          tfNascimento.setText("");
        //  tfCpf.setText("");
          tfRg.setText("");
          tfNum.setText("");
          tfTipoBeneficio.setText("");
      }
     public void verificaCpf(){
         if(tfCpf != null){
             tfCpf.setEditable(false);
         }else{
             tfCpf.setEditable(true);
         }
     }
    
    private void btNovoActionPerformed(java.awt.event.ActionEvent evt) {                                       
        
        tipoCadastro = "novo";
        novoCliente();
        capturarDataSys();
      
       
        
   
    }                                      

    
    
private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
    
        if (tipoCadastro.equals("novo")){
            cadastraCliente();
        } else if(tipoCadastro.equals("alteracao")){
            alterarCliente();
            
            
        }
        
    
         
}                                        



private void btEditarActionPerformed(java.awt.event.ActionEvent evt) {                                         
    if(verificarCampos()){
    
    tipoCadastro = "alteracao";
     habilitarCampos();
     tfCpf.setEditable(false);
        }else{
            
        JOptionPane.showMessageDialog(this, "Não há Clientes para editar!");
                    tfNome.requestFocus();
        }
}                                        




    /**
     * @param args the command line arguments
     */
   public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Clientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Clientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Clientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Clientes.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Clientes().setVisible(true);
            }
        });
    }

Este do ClienteControl:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sisfinanceira.clientes;

import br.com.sisfinanceira.acessobdf.AcessoMySql;
import br.com.sisfinanceira.listclientes.ListClienteBean;
import com.mysql.jdbc.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Rafael
 */
public class EditaClientesControl {
    PreparedStatement pstm;
    ResultSet rs;
    
     String alteraCliente = "UPDATE CLIENTES SET NOME = ?, ENDERECO = ?, BAIRRO = ?, CIDADE = ?, UF = ?, CEP = ?, TELEFONE = ?, NUMBENEFICIO = ?, DATA_EMPRESTIMO = ?, SALARIO = ?, DATA_NASCIMENTO = ?, TIPOBENEFICIO = ?, RG = ?, NUM = ?, CODIGO = ?  WHERE CPF = ?";
    
    
    
    
    
    
        public void alterarCliente(EditaClientesBean cliente){
        try{
           
            AcessoMySql bd = new AcessoMySql();
            
            pstm = (PreparedStatement) bd.conectar().prepareStatement(alteraCliente);
            pstm.setInt(1, cliente.getCodigo());
            pstm.setString(2, cliente.getNome());
            pstm.setString(3, cliente.getEndereco());
            pstm.setString(4, cliente.getBairro());
            pstm.setString(5, cliente.getCidade());
            pstm.setString(6,cliente.getUf());
            pstm.setString(7, cliente.getCep());
            pstm.setString(8, cliente.getTelefone());
            pstm.setString(9, cliente.getNumbeneficio());
            pstm.setString(10, cliente.getData_emprestimo());
            pstm.setString(11, cliente.getSalario());
            pstm.setString(12, cliente.getData_nascimento());
            pstm.setString(13, cliente.getTipobeneficio());
            pstm.setString(15, cliente.getRg());
            pstm.setString(16, cliente.getNum());
            pstm.setString(14, cliente.getCpf());
            pstm.executeUpdate();
            bd.desconectar();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
        
           public  List<EditaClientesBean> listarListClientes(String nome){
       List<EditaClientesBean> listclientes = new ArrayList();
      try{
          AcessoMySql bd = new AcessoMySql();
         // pstm = bd.conectar().prepareStatement(consultaEditaCliente);
          pstm.setString(1, nome);// SELECT * FROM CLIENTES WHERE NOME LIKE Rafael
          rs = pstm.executeQuery();
          ListClienteBean cli;
          while (rs.next()){
              cli = new ListClienteBean();
              
              cli.setCodigo(rs.getInt("codigo"));
              cli.setNome(rs.getString("nome"));
              cli.setEndereco(rs.getString("endereco"));
              cli.setBairro(rs.getString("bairro"));
              cli.setCep(rs.getString("cep"));
              cli.setData_emprestimo(rs.getString("data_emprestimo"));
              cli.setData_nascimento(rs.getString("data_nascimento"));
              cli.setNumbeneficio(rs.getString("numbeneficio"));
              cli.setTelefone(rs.getString("telefone"));
              cli.setCidade(rs.getString("cidade"));
              cli.setCpf(rs.getString("cpf"));
              cli.setTipobeneficio(rs.getString("tipobeneficio"));
              cli.setUF(rs.getString("UF"));
              cli.setSalario(rs.getString("salario"));
              cli.setCpf(rs.getString("cpf"));
              cli.setRg(rs.getString("rg"));
              cli.setNum(rs.getString("num"));
            //  listclientes.add(cli);
              }
          bd.desconectar();
      }
      catch(Exception e){
          e.printStackTrace();
      }
          
       return listclientes;
       
   }

}

e esta do ClienteBean :

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sisfinanceira.clientes;

/**
 *
 * @author Rafael
 */
public class EditaClientesBean {
    public EditaClientesBean() {
    }
    
     private Integer codigo;
     private String nome;
     private String endereco;
     private String bairro;
     private String cidade;
     private String uf;
     private String cep;
     private String telefone;
     private String numbeneficio;
     private String data_emprestimo;
     private String data_nascimento;
     private String tipobeneficio;
     private String salario;
     private String rg;
     private String num;
     private String cpf;
    /**
     * @return the codigo
     */
    public Integer getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the endereco
     */
    public String getEndereco() {
        return endereco;
    }

    /**
     * @param endereco the endereco to set
     */
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    /**
     * @return the bairro
     */
    public String getBairro() {
        return bairro;
    }

    /**
     * @param bairro the bairro to set
     */
    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    /**
     * @return the cidade
     */
    public String getCidade() {
        return cidade;
    }

    /**
     * @param cidade the cidade to set
     */
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    /**
     * @return the uf
     */
    public String getUf() {
        return uf;
    }

    /**
     * @param uf the uf to set
     */
    public void setUf(String uf) {
        this.uf = uf;
    }

    /**
     * @return the cep
     */
    public String getCep() {
        return cep;
    }

    /**
     * @param cep the cep to set
     */
    public void setCep(String cep) {
        this.cep = cep;
    }

    /**
     * @return the telefone
     */
    public String getTelefone() {
        return telefone;
    }

    /**
     * @param telefone the telefone to set
     */
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    /**
     * @return the numbeneficio
     */
    public String getNumbeneficio() {
        return numbeneficio;
    }

    /**
     * @param numbeneficio the numbeneficio to set
     */
    public void setNumbeneficio(String numbeneficio) {
        this.numbeneficio = numbeneficio;
    }

    /**
     * @return the data_emprestimo
     */
    public String getData_emprestimo() {
        return data_emprestimo;
    }

    /**
     * @param data_emprestimo the data_emprestimo to set
     */
    public void setData_emprestimo(String data_emprestimo) {
        this.data_emprestimo = data_emprestimo;
    }

    /**
     * @return the data_nascimento
     */
    public String getData_nascimento() {
        return data_nascimento;
    }

    /**
     * @param data_nascimento the data_nascimento to set
     */
    public void setData_nascimento(String data_nascimento) {
        this.data_nascimento = data_nascimento;
    }

    /**
     * @return the tipobeneficio
     */
    public String getTipobeneficio() {
        return tipobeneficio;
    }

    /**
     * @param tipobeneficio the tipobeneficio to set
     */
    public void setTipobeneficio(String tipobeneficio) {
        this.tipobeneficio = tipobeneficio;
    }

    /**
     * @return the rg
     */
    public String getRg() {
        return rg;
    }

    /**
     * @param rg the rg to set
     */
    public void setRg(String rg) {
        this.rg = rg;
    }

    /**
     * @return the num
     */
    public String getNum() {
        return num;
    }

    /**
     * @param num the num to set
     */
    public void setNum(String num) {
        this.num = num;
    }

    /**
     * @return the cpf
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * @return the salario
     */
    public String getSalario() {
        return salario;
    }

    /**
     * @param salario the salario to set
     */
    public void setSalario(String salario) {
        this.salario = salario;
    }
     
    
}

Porem depois de fazer as alterações, clico em salvar, e não acontece nada, porém não me da nenhum erro!

26 Respostas

A

cara,

tenta dar um commit na conexão.

t+

R

Cara desculpa a ignorância é que sou supernovato, como faço isto?

A

dentro da sua classe AcessoMySql, vc tem um objeto da classe Connection, entao vc vai fazer seuobjeto.commit(); e esse codigo deve ser colocado depois do executeUpdate.

t+

R

cara, agora me deu um numPointerException, no commit()"
Vlw!

A

hum, seu objeto para classe Conection nao pode estar null nao, da uma debugada ai e o motivo dele estar null.

R

Tchê, me desculpa, mas como faço isto?

A

coloca o codigo da sua classe AcessoMysql, fica mais facil de te explicar… :smiley:

R
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sisfinanceira.acessobdf;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author Rafael
 */
public class AcessoMySql {
    Connection con;
    
    /** Creates a new instance of AcessoMySql */
    public AcessoMySql() {
    }
    
    public Connection conectar(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/financ?user=root&password=rafa9968");
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível encontrar o Driver!");
        } catch (SQLException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível conectar ao banco!");
        }
        return con;
    }
    
    public void desconectar(){
        try {
            con.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
A

dei uma melhorada no seu codigo dessa classe, agora está implementando o padrao singleton

depois q vc fizer executeUpdate() vc vai chamar o metodo AcessoMySql.getInstance().commit();

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sisfinanceira.acessobdf;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author Rafael
 */
public class AcessoMySql {
    private Connection con;
	private static AcessoMySql instance;
    
    /** Creates a new instance of AcessoMySql */
    private AcessoMySql() {
		conectar();
    }
	
	public static AcessoMySql getInstance(){
		if(instance == null){
			instance = new AcessoMySql();
		}
		
		return instance;
	}
    
    private void conectar(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/financ?user=root&password=rafa9968");
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível encontrar o Driver!");
        } catch (SQLException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível conectar ao banco!");
        }
    }

     public Connection getConnection(){
         return con;
    }
	
	public void commit(){
		if(con != null)
			con.commit();
		}
	}
    
    public void desconectar(){
        try {
			if(con != null){
				con.close();
			}
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

espero q funcione

R

Cara só agora consegui testar, continua com o NullPointerExceprion!

A

cara,

coloca o log do erro ai para eu ver aonde está acontecendo o NullPointerException.

R

java.lang.NullPointerException at br.com.sisfinanceira.clientes.EditaClientesControl.alterarCliente(EditaClientesControl.java:53) at br.com.sisfinanceira.Clientes.alterarCliente(Clientes.java:560) at br.com.sisfinanceira.Clientes.btSalvarActionPerformed(Clientes.java:706) at br.com.sisfinanceira.Clientes.access$200(Clientes.java:33) at br.com.sisfinanceira.Clientes$3.actionPerformed(Clientes.java:182) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6504) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6269) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) CONSTRUÍDO COM SUCESSO (tempo total: 2 minutos 46 segundos)

A

verifique se vc colocou seu metodo assim

public void alterarCliente(EditaClientesBean cliente){  
         try{  
             pstm = AcessoMySql.getInstance().getConnection().prepareStatement(alteraCliente);  
             pstm.setInt(1, cliente.getCodigo());  
             pstm.setString(2, cliente.getNome());  
             pstm.setString(3, cliente.getEndereco());  
             pstm.setString(4, cliente.getBairro());  
             pstm.setString(5, cliente.getCidade());  
             pstm.setString(6,cliente.getUf());  
             pstm.setString(7, cliente.getCep());  
             pstm.setString(8, cliente.getTelefone());  
             pstm.setString(9, cliente.getNumbeneficio());  
             pstm.setString(10, cliente.getData_emprestimo());  
             pstm.setString(11, cliente.getSalario());  
             pstm.setString(12, cliente.getData_nascimento());  
             pstm.setString(13, cliente.getTipobeneficio());  
             pstm.setString(15, cliente.getRg());  
             pstm.setString(16, cliente.getNum());  
             pstm.setString(14, cliente.getCpf());  
             pstm.executeUpdate();  
             AcessoMySql.getInstance().commit();
             AcessoMySql.getInstance().desconectar();  
         }catch(Exception e){  
             e.printStackTrace();  
         }  
     }
R

Cara agora me deu um erro dizendo que falta o metodo getConnection(), na classe de AcessoMysql!

A

Vc tem q pegar a classe AcessoMySql que eu te mandei…

R

cara mas foi oque eu coloquei copiei e colei substitui a que tinha antes!
corrigi alguns imports, e ficou ok!

R

cara tinha faltado digitar umas linhas rsrsrs agora deu o seguinte codigo de erro:

Set 19, 2011 8:28:54 PM br.com.sisfinanceira.acessobdf.AcessoMySql commit
Grave: null
java.sql.SQLException: Can't call commit when autocommit=true
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
	at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1544)
	at br.com.sisfinanceira.acessobdf.AcessoMySql.commit(AcessoMySql.java:55)
	at br.com.sisfinanceira.clientes.EditaClientesControl.alterarCliente(EditaClientesControl.java:54)
	at br.com.sisfinanceira.Clientes.alterarCliente(Clientes.java:560)
	at br.com.sisfinanceira.Clientes.btSalvarActionPerformed(Clientes.java:706)
	at br.com.sisfinanceira.Clientes.access$200(Clientes.java:33)
	at br.com.sisfinanceira.Clientes$3.actionPerformed(Clientes.java:182)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

CONSTRUÍDO COM SUCESSO (tempo total: 1 minuto 21 segundos)
A

tira essa linha AcessoMySql.getInstance().commit();

R

Cara agora não deu nenhum erro, mas não alterou no banco!

A

cara,

na classe AcessoMySql no metodo conectar coloque conn.setAutoCommit(false);

e volte com AcessoMySql.getInstance().commit();

ve se funciona

R

sem erros mas sem a alteração tmbém, a classe AcessoMysql ficou assim:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sisfinanceira.acessobdf;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Rafael
 */
public class AcessoMySql {  
    private Connection con;  
    private static AcessoMySql instance;  
      
    /** Creates a new instance of AcessoMySql */  
    public AcessoMySql() {  
        conectar();  
    }  
      
    public static AcessoMySql getInstance(){  
        if(instance == null){  
            instance = new AcessoMySql();  
        }  
          
        return instance;  
    }  
      
    public Connection conectar(){  
        
        try { 
             
            Class.forName("com.mysql.jdbc.Driver");  
            con = DriverManager.getConnection("jdbc:mysql://localhost/financ?user=root&password=rafa9968");  
            con.setAutoCommit(false);
        } catch (ClassNotFoundException ex) {  
            ex.printStackTrace();  
            System.out.println("Não foi possível encontrar o Driver!");  
        } catch (SQLException ex) {  
            ex.printStackTrace();  
            System.out.println("Não foi possível conectar ao banco!");  
        }  
        return con;  
        
    }  
      
     public Connection getConnection(){  
         return con;  
    } 
    
    public void commit(){  
        if(con != null)  
            try {
            con.commit();
        } catch (SQLException ex) {
            Logger.getLogger(AcessoMySql.class.getName()).log(Level.SEVERE, null, ex);
        }  
        }  
      
      
    public void desconectar(){  
        try {  
            if(con != null){  
                con.close();  
            }  
        } catch (SQLException ex) {  
            ex.printStackTrace();  
        }  
    }  
}
A

Cara,

fiz um teste num exemplo que o usuario do forum tava com dificuldade e funcinou, testei insert, update e delete.
vc vai ter q ver o que está acontencendo no seu codigo.

t+

R

Cara acho que sei oque acontece!

assim em um outro caso eu conseguia realizar o update, a diferença é que eu utilizava a tabela para utilizar o codigo como parametro para o sql vou colocar o exemplo:

classe ClienteControl

public void alterarCliente(ClienteBean cliente){
        try{
            pstm = bd.conectar().prepareStatement(alteraCliente);
            pstm.setString(1, cliente.getNome());
            pstm.setString(2, cliente.getEndereco());
            pstm.setString(3, cliente.getCidade());
            pstm.setString(4, cliente.getBairro());
            pstm.setString(5, cliente.getUf());
            pstm.setString(6, cliente.getCep());
            pstm.setString(7, cliente.getTelefone());
            pstm.setInt(8, cliente.getCodigo());
            pstm.executeUpdate();
            bd.desconectar();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

aqui a classe onde realizo a alteração:

protected void alterarCliente(){
        if (verificarCampos() && verificarUF()){
            ClienteBean cliente = new ClienteBean();
            cliente.setCodigo(clientes.get(tbClientes.getSelectedRow()).getCodigo());
            cliente.setNome(tfNome.getText().trim());
            cliente.setEndereco(tfEndereco.getText().trim());
            cliente.setBairro(tfBairro.getText().trim());
            cliente.setCidade(tfCidade.getText().trim());
            cliente.setUf(tfUf.getText().trim());
            cliente.setCep(tfCep.getText().trim());
            cliente.setTelefone(tfTelefone.getText().trim());
            ClienteControl c = new ClienteControl();
            c.alterarCliente(cliente);
            desabilitarCampos();
        } 
    }

já no outro caso em que não consigo realizar, eu pego os valores dos jtextfields, acredito que ele não consiga pegar o codigo do textfield codigo, poderia ser isto:

classe EditaClientesControl

public class EditaClientesControl {
    PreparedStatement pstm;
    ResultSet rs;
    Connection con;
     String alteraCliente = "UPDATE CLIENTES SET NOME = ?, ENDERECO = ?, BAIRRO = ?, CIDADE = ?, UF = ?, CEP = ?, TELEFONE = ?, NUMBENEFICIO = ?, DATA_EMPRESTIMO = ?, SALARIO = ?, DATA_NASCIMENTO = ?, TIPOBENEFICIO = ?, RG = ?, NUM = ?, CPF = ?  WHERE CODIGO = ?";
     String consultaEditatCliente = "SELECT * FROM CLIENTES WHERE NOME LIKE ?";
    
    
    
    
    
      
           
            AcessoMySql bd = new AcessoMySql();
            
            public void alterarCliente(EditaClientesBean cliente){    
       try{    
           pstm = (PreparedStatement) AcessoMySql.getInstance().getConnection().prepareStatement(alteraCliente);    
           pstm.setInt(1, cliente.getCodigo());    
           pstm.setString(2, cliente.getNome());    
           pstm.setString(3, cliente.getEndereco());    
           pstm.setString(4, cliente.getBairro());    
           pstm.setString(5, cliente.getCidade());    
           pstm.setString(6,cliente.getUf());    
           pstm.setString(7, cliente.getCep());    
           pstm.setString(8, cliente.getTelefone());    
           pstm.setString(9, cliente.getNumbeneficio());    
           pstm.setString(10, cliente.getData_emprestimo());    
           pstm.setString(11, cliente.getSalario());    
           pstm.setString(12, cliente.getData_nascimento());    
           pstm.setString(13, cliente.getTipobeneficio());    
           pstm.setString(14, cliente.getCpf());
           pstm.setString(15, cliente.getRg());    
           pstm.setString(16, cliente.getNum());    
               
           pstm.executeUpdate();    
           AcessoMySql.getInstance().commit();  
           AcessoMySql.getInstance().desconectar();    
       }catch(Exception e){    
           e.printStackTrace();    
       }    
   }

aqui a classe onde faço a alteração:

protected void alterarCliente(){
        if (verificarCampos() && verificarCpf()){
            EditaClientesBean cliente = new EditaClientesBean();
             cliente.setCodigo(tfCodigo.getComponentCount());
             cliente.setNome(tfNome.getText().trim());
             cliente.setEndereco(tfEndereco.getText().trim());
             cliente.setBairro(tfBairro.getText().trim());
             cliente.setCidade(tfCidade.getText().trim());
             cliente.setUf(tfUF.getText().trim());
             cliente.setCep(tfCep.getText().trim());
             cliente.setTelefone(tfTelefone.getText().trim());
             cliente.setNumbeneficio(tfNumBeneficio.getText().trim());
             cliente.setData_emprestimo(tfDataEmprestimo.getText().trim());
             cliente.setSalario(tfSalario.getText().trim());       
             cliente.setData_nascimento(tfNascimento.getText().trim());
             cliente.setTipobeneficio(tfTipoBeneficio.getText().trim());
             cliente.setRg(tfRg.getText().trim());
             cliente.setNum(tfNum.getText().trim());
             cliente.setCpf(tfCpf.getText().trim());
             EditaClientesControl c = new EditaClientesControl();
             c.alterarCliente(cliente);
             desabilitarCampos();
             tfCpf.setEditable(false);
        } else{
            JOptionPane.showMessageDialog(this, "Informe o nome do cliente!");
            tfNome.requestFocus();
        }
    }
R

up!!!

R

seria possivel aqui no caso no tfCpf converter o jtextfield para int ao invéz de String?, que ai eu consigo usar o valor para a condição no sql!

R

ninguém sabe como faço para p jtextfield armazenar números inteiros ao invés de string? não estou conseguindo encontrar, nada que me ajude!

Criado 19 de setembro de 2011
Ultima resposta 22 de set. de 2011
Respostas 26
Participantes 2