1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema na exibição de mensagem vindo do banco de dados mysql

pessoal estou com um problema meio que serio na meu projeto, eu trabalho com status de ativo e não ativo.

Quando o usuario for cadastrar no sistema tenho que fazer um select antes pra ve se o cliente esta ativo dai quero exibir uma mensagem dizendo que ele esta ativo trazendo nome e cpf,

se estiver desativo quero exibir uma mensagem com uma caixa de opcoes perguntando se quer ativar ou não,, dai se clicar em sim ativa se clicar e não n faz nada;

se não existir o cliente no banco(verifico pelo cpf ou cnpj) eu cadastro normalmente;

beleza consigo fazer isso no java com alguns métodos so que ficou uma bagunça so, muito dificil de manter e dar manuntenção as veses ate mim perco nesses métodos; vou postar aqui;

Esse aqui é meu método de salvar

private void salvar() {

        String sql = "{CALL ENDERECO_INSERT_CLIENTE(?,?,?,?,?,?,?) }";

        //criando instancias de ClienteBean e EnderecoBean
        ClienteBean cb = new ClienteBean();
        EnderecoBean eb = new EnderecoBean();

        //criando instancias de ClienteDao e EnderecoDao
        ClienteDAO cd = new ClienteDAO();
        EnderecoDAO ed = new EnderecoDAO();

        //testa se campos obrigatrios estao vazios
        if ((TXTNome.getText().equals("")) || (TXTEndereco.getText().equals("")) || (TXTNumero.getText().equals(""))
                || (TXTBairro.getText().equals("")) || (TXTCidade.getText().equals("")) || (FTXTestado.getText().equals(""))
                || (FTXTcnpj.getText().replaceAll("[. . / -]", "").trim().equals("")) & (FTXTcpf.getText().replaceAll("[. . -]", "").trim().equals(""))) {

            JOptionPane.showMessageDialog(null, "Os campos com * são obrigatórios", "Erro", JOptionPane.ERROR_MESSAGE);

        } else {

            //setando valores de cliente e endereco nos seus devidos setters do pacote Bean
            cb.setNome(TXTNome.getText().toUpperCase());
            eb.setCep(FTXTcep.getText().replaceAll("[-]", ""));
            eb.setRua(TXTEndereco.getText().toUpperCase());
            eb.setNumero(Integer.parseInt(TXTNumero.getText()));
            eb.setComplemento(TXTComplemento.getText().toUpperCase());
            eb.setBairro(TXTBairro.getText().toUpperCase());
            eb.setCidade(TXTCidade.getText().toUpperCase());
            eb.setEstado(FTXTestado.getText().toUpperCase());
            cb.setTelefone(FTXTtelefone.getText().replaceAll("[()-]", "").trim());
            cb.setCelular(FTXTcelular.getText().replaceAll("[()-]", "").trim());
            cb.setEmail(TXTEmail.getText());
            cb.setCpf(FTXTcpf.getText().replaceAll("[.-]", "").trim());
            cb.setCnpj(FTXTcnpj.getText().replaceAll("[./-]", "").trim());
            cb.setRg(TXTRg.getText().toUpperCase());

            //inserir na tabela clientes
            cd.insert(cb);

            //inserindo na tabela endereço
            ed.insert(eb, sql);

            //mostra mensagem de cadastro realizado
            JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso");

            //fechando tela de cadastro
            dispose();

            //invoca tela principal
            new JF_Tela_Principal_Clientes().setVisible(true);

        }

    }

So que anter de salvar executo outro método para fazer a verificação que é esse método aqui

private void verificaCpf() {

        String valor = FTXTcpf.getText().replaceAll("[.-]", "").trim();

        ClienteBean cb = new ClienteBean();

        //criando querry para verificar valor de cpf e nome na VIEW de clientes desativados
        String sql = "select cpf from vw_cliente_endereco_desativos where cpf = ?";

        //abrindo conexao com banco de dados
        Connection con = new ConnectionFactory().getConnection();

        //instanciando um obj de preparedstatement para executar a querry
        try (PreparedStatement ps = con.prepareStatement(sql)) {

            ps.setString(1, valor);

            ResultSet rs = ps.executeQuery();

            boolean acertou = false;

            while (rs.next()) {

                if (rs.getString("cpf").equals(valor)) {

                    acertou = true;

                }

            }

            if (acertou) {

                String querry = "select id_cliente,nome from vw_cliente_endereco_desativos where cpf = ?";

                PreparedStatement ps3 = con.prepareStatement(querry);

                ps3.setString(1, valor);

                ResultSet rs2 = ps3.executeQuery();

                rs2.first();

                Object opcoes[] = {"sim", "não"};

                //caixa de dialogo de opcoes sim e não
                int sim = JOptionPane.showOptionDialog(null, "Cliente se encontra desativado\n Nome: " + rs2.getString(2) + "\n"
                        + "Id: " + rs2.getInt(1) + "\n"
                        + "CPF: " + valor + "\n" + "Deseja reativa-lo ?",
                        "CPF existente", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);

                // se for sim o método de configurar clientes é invocado o frame de editar aparece
                //com campos de textos preenchidos
                if (sim == JOptionPane.YES_OPTION) {

                    new ClienteDAO().reativar("{CALL REATIVAR_CLIENTE_CPF(?)}", valor);

                    dispose();

                    new JF_Tela_Principal_Clientes().setVisible(true);

                }

            } else {

                salvar();

            }

        } catch (SQLException e) {

            e.getMessage();

        }
    }

fora que verifico quando o botao de salvar é clicado se qual dos campos cnpj ou cpf esta preenchido para não salvar cpf e cnpj para um mesmo cliente,,

OU SEJA ESTA UMA BAGUNÇA TERRIVEL

estou tentando trocar todo o processamento para uma procedure ate consigo salver e fazer as verificações ams não consigo retorna uma mensagem para o usuario do sistema para saber oque ele fez queria criar essa mensagem(dentro do banco mysql) e retorna ela num JOPtionPane e mostrar na tela

AI VAI A PROCEDURE

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `ATIVA_CLIENTE_TESTE`(PNOME VARCHAR(45),PTELEFONE VARCHAR(45),PCELULAR VARCHAR(45),PEMAIL VARCHAR (45),
PCNPJ VARCHAR (45),PCPF VARCHAR(45),PRG VARCHAR(45),PRUA VARCHAR(45),PNUMERO INT,PCOMPLEMENTO VARCHAR(45),PBAIRRO VARCHAR(45),
PCIDADE VARCHAR (45),PESTADO CHAR(2),PCEP CHAR(8))
BEGIN

SET AUTOCOMMIT=0;

IF EXISTS (SELECT CPF FROM vw_cliente_endereco_ativos WHERE CPF=PCPF) THEN

SELECT"CLIENTE JA EISTE EM SEU CADASTRO, CONSUTE O CPF CADASTRADO" ;

ELSEIF EXISTS(SELECT CPF FROM vw_cliente_endereco_desativos WHERE CPF = PCPF) THEN

UPDATE CLIENTES AS C,ENDERECO AS E SET C.ESTATUS ="A", E.ESTATUS = "A" WHERE C.ID_CLIENTE = E.ID_CLIENTE;

SELECT "ESSE CLIENTE SE ENCONTRAVA INATIVO NA SUA BASE DE DADOS, CONSULTE O CPF INSERIDO:" ;

ELSE

START transaction;

INSERT INTO CLIENTES (NOME,TELEFONE,CELULAR,EMAIL,CNPJ,CPF,RG,DT,HORA) VALUES(PNOME,PTELEFONE,PCELULAR,PEMAIL,PCNPJ,
PCPF,PRG,CURDATE(),CURTIME());

INSERT INTO ENDERECO(ID_CLIENTE,RUA,NUMERO,COMPLEMENTO,BAIRRO,CIDADE,ESTADO,CEP) VALUES ((SELECT MAX(ID_CLIENTE)FROM CLIENTES),PRUA,
PNUMERO,PCOMPLEMENTO,PBAIRRO,PCIDADE,PESTADO,PCEP);

COMMIT;

select "cadastrado com susesso";

ROLLBACK;

select "erro ao cadastrar";

END IF;

END

so que queria capturar essas mensagens que estao num select manda para m JOptionpane e mostar para usuario ou fazer alguma variavel do java recebela,, tem como fazer? agradeço muito a ajuda isso esta mim dando uma dor de cabeça terrivel;;;vlww

  • poxa algumas visitas e nada,, deixei a pergunta confusa demais pessoal??

    Fábio Reis   01 de nov de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.