cara,
na classe AcessoMySql no metodo conectar coloque conn.setAutoCommit(false);
e volte com AcessoMySql.getInstance().commit();
ve se funciona
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]/*
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!