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

cara,

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

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

ve se funciona

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

[code]/*

  • 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();
    }
    }
    } [/code]

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+

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

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

}
[/code]

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

up!!!

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!

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!