Chamar 2 métodos em um botão salva em java [RESOLVIDO]

8 respostas
java
aeciocleysson

e ai pessoal beleza.

eu tenho uma tela de cadastro onde o usuário tem a opção de cadastrar um cliente Físico ou Jurídico, selecionando um radio box de acordo com o tipo de cliente.
então tenho um método para salvar o cliente Físico e um para salvar o cliente Jurídico, e estou chamando esses dois métodos no botão salvar de acordo com o radio button que esta selecionado. o problema e que mostra a mensagem de salvo com sucesso mas não salva nada no banco. tem como eu fazer esse tipo de chamada no botão salvar?

private void btn_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                           

    if (rb_juridica.isSelected()) {
        
        Cliente_Juridico clienteJ = new Cliente_Juridico();
        salvarClienteJuridico(clienteJ);
        
    } else if (rb_fisica.isSelected()) {
        
        Cliente_Fisico clienteF = new Cliente_Fisico();
        salvarClienteFisico(clienteF);
        
    } else {
        JOptionPane.showMessageDialog(null, "Você deve selecionar uma categoria.", "Alerta", JOptionPane.ERROR_MESSAGE);
    }
}

8 Respostas

A

Sim, você está fazendo.

O que aparentemente está errado:
Você criou a instância, mais não fez as atribuições que o objeto criado precisa.

Cadê o:

clienteJ.setNome;

clienteJ.setCNPJ;

clienteJ.setIsso;

clienteJ.setAquilo e  se vai.

A mesma coisa para:

Obs.:

“aeciocleysson:

o problema e que mostra a mensagem de salvo com sucesso mas não salva nada no banco.

Talvez tenha um monte de null no banco de dados, o acesse diretamente e veja as tabelas.
O mais provável é que você tenha esquecido de passar os dados para a instância criada.

Se o erro continuar, poste o SQL e as classes envolvidas.

Olhe o banco de dados diretamente, para ver as situação das tabelas.

aeciocleysson

se eu tirar uma das instâncias ai grava direitinho, o problema e quando eu coloco as duas.

private void salvarClienteJuridico(Cliente_Juridico cliente) {

    ClasseBLL_J bll = new ClasseBLL_J();

    cliente.setNome_cliente_J(txt_nome_cli.getText());
    cliente.setCnpj(txt_cnpj.getText());
    cliente.setTelefone(txt_tel.getText());
    cliente.setCelular(txt_cel.getText());
    cliente.setEmail(txt_email.getText());
    cliente.setEndereco(txt_end.getText());
    cliente.setNum_end(txt_num.getText());
    cliente.setBairro(txt_bairro.getText());
    cliente.setCidade(txt_cidade.getText());
    cliente.setEstado(txt_cidade.getText());
    cliente.setCategoria(rb_juridica.getText());

    if (rb_juridica.getText().equals("") || rb_fisica.getText().equals("") || txt_nome_cli.getText().equals("") || txt_cnpj.getText().equals("   .   .   /    -  ") || txt_cel.getText().equals("(  )      -    ")) {

        JOptionPane.showMessageDialog(null, "Você deve selecionar uma categoria e preencher os campos:\n Nome, CNPJ, Celular!", "Alerta", JOptionPane.WARNING_MESSAGE);
        txt_nome_cli.setBackground(Color.cyan);
        txt_cnpj.setBackground(Color.cyan);
        txt_cel.setBackground(Color.cyan);
        rb_juridica.setBackground(Color.cyan);
        rb_fisica.setBackground(Color.cyan);
    } else {
        bll.cadastrarClienteJuridicoDAO(cliente);

        JOptionPane.showMessageDialog(null, "Cliente  cadastrado com sucesso!");

        this.limparCampo();
        this.limparRadio();
    }

}

private void salvarClienteFisico(Cliente_Fisico cliente) {

    ClasseBLL_F bll = new ClasseBLL_F();

    cliente.setNome_cliente_F(txt_nome_cli.getText());
    cliente.setCpf(txt_cpf.getText());
    cliente.setTelefone(txt_tel.getText());
    cliente.setCelular(txt_cel.getText());
    cliente.setEmail(txt_email.getText());
    cliente.setEndereco(txt_end.getText());
    cliente.setNum_end(txt_num.getText());
    cliente.setBairro(txt_bairro.getText());
    cliente.setCidade(txt_cidade.getText());
    cliente.setEstado(txt_cidade.getText());
    cliente.setCategoria(rb_fisica.getText());

    if (rb_juridica.getText().equals("") || rb_fisica.getText().equals("") || txt_nome_cli.getText().equals("") || txt_cpf.getText().equals("   .   .   /    -  ") || txt_cel.getText().equals("(  )      -    ")) {

        JOptionPane.showMessageDialog(null, "Você deve selecionar uma categoria e preencher os campos:\n Nome, CPF, Celular!", "Alerta", JOptionPane.WARNING_MESSAGE);
        txt_nome_cli.setBackground(Color.cyan);
        txt_cpf.setBackground(Color.cyan);
        txt_cel.setBackground(Color.cyan);
        rb_juridica.setBackground(Color.cyan);
        rb_fisica.setBackground(Color.cyan);
    } else {

        bll.salvarClienteFisicoDAO(cliente);

        JOptionPane.showMessageDialog(null, "Cliente " + txt_nome_cli.getText() + " cadastrado com sucesso!");

        this.limparCampo();
        this.limparRadio();
    }

}
A

Pela lógica apresentada, esta mensagem não tem nada a ver com a inserção no banco de dados, ela está relacionada, com o preenchimento correto do formulário.

Seria interessante se você postasse os métodos abaixo

aeciocleysson

eu so não estou entendendo porque que quando eu coloco só um método ele salva os dados, e quando coloco os dois ele não salva.

public void cadastro_cli_F(Cliente_Fisico cliente) throws SQLException {

    StringBuilder sql = new StringBuilder();

    sql.append("INSERT INTO tbl_cliente_fisico ");
    sql.append("(nome_cliente_J, cpf, telefone, celular, email, endereco, num_end, bairro, cidade, estado, data_cad_J, categoria) ");
    sql.append("VALUES (?, ? ,? , ?, ?, ?, ?, ?, ?, ?, ?, ?) ");

    Connection conection = ModuloConexao.conector();

    PreparedStatement comando = conection.prepareStatement(sql.toString());

   comando.setString(1, cliente.getNome_cliente_F());
    comando.setString(2, cliente.getCpf());
    comando.setString(3, cliente.getTelefone());
    comando.setString(4, cliente.getCelular());
    comando.setString(5, cliente.getEmail());
    comando.setString(6, cliente.getEndereco());
    comando.setString(7, cliente.getNum_end());
    comando.setString(8, cliente.getBairro());
    comando.setString(9, cliente.getCidade());
    comando.setString(10, cliente.getEstado());
    comando.setDate(11, (Date) cliente.getData_cad_j());
    comando.setString(12, cliente.getCategoria());

    comando.executeUpdate();

}

// Método para cadastrar um cliente
public void cadastro_cli_J(Cliente_Juridico cliente) throws SQLException {

    StringBuilder sql = new StringBuilder();

    sql.append("INSERT INTO tbl_cliente_juridico ");
    sql.append("(nome_cliente_J, cnpj, telefone, celular, email, endereco, num_end, bairro, cidade, estado, data_cad_J, categoria) ");
    sql.append("VALUES (?, ? ,? , ?, ?, ?, ?, ?, ?, ?, ?, ?) ");

    Connection conection = ModuloConexao.conector();

    PreparedStatement comando = conection.prepareStatement(sql.toString());

    comando.setString(1, cliente.getNome_cliente_J());
    comando.setString(2, cliente.getCnpj());
    comando.setString(3, cliente.getTelefone());
    comando.setString(4, cliente.getCelular());
    comando.setString(5, cliente.getEmail());
    comando.setString(6, cliente.getEndereco());
    comando.setString(7, cliente.getNum_end());
    comando.setString(8, cliente.getBairro());
    comando.setString(9, cliente.getCidade());
    comando.setString(10, cliente.getEstado());
    comando.setDate(11, (Date) cliente.getData_cad_j());
    comando.setString(12, cliente.getCategoria());

    comando.executeUpdate();

}
A

Você alternou, pra ver se um salva e o outro não ou só testou com 1.

Voltando à codificação:

Eu contei 11 set(AlgumaCoisa) abaixo:

Mas no DAO tem 12.

Poderia postar como está gerando a data ->(Date) cliente.getData_cad_j()?
Além disso o construtor informado é o padrão:
public normal(){//tem alguma coisa aqui?}

Veja quem está fazendo o tratamento das exceções abaixo, pois quem trata deve apontar o erro:

Se não não conseguir encontrar remova o throws SQLException, a IDE vai apontar um erro ai use to try, catch.

Deve ficar, no mínimo, assim:

try {
        //todas as instruções aqui
    } catch (SQLException ex) {
        Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
    }

Isto vai identificar com mais facilidade o erro.
Depois de o corrigir, você pode remover try, catch e lançar throws SQLException novamente, para que alguém mais a frente trate o erro.

Mas lembre, quem for tratar deve usar o try, catch e é dentro do catch que você conhece, descreve e trata o erro, as vezes, passa pelo finally.

Ficar fazendo throws SQLException quando deveria usar o try não ajuda.

Se o catch capturar um erro, poste.

Como dito, sim.

A

Obs.: você não vai receber uma mensagem de erro, ela vai ser impressa no console, assim, quando você tentar salvar, olhe a saída do console, pra ver se o catch capturou alguma coisa (exceção).

aeciocleysson

dentro do método DAO tem 12 set é porque o comando.setDate(11, (Date) cliente.getData_cad_j()); esta gravando diretamente no banco de dados a data que esta no banco como timeStamp, ou seja, quando eu faço o cadastro já grava automaticamente no banco a data atual de acordo com a data do PC. e eu so estou exibindo essa data na minha tela de pesquisa e de atualização.

aeciocleysson

Deu certo aqui amigo, eu refiz os métodos, um dos erro e por que o meu campo estado estava no banco como Char(2) e no java estava com mais caracteres. valeu pela ajuda

Criado 20 de agosto de 2017
Ultima resposta 21 de ago. de 2017
Respostas 8
Participantes 2