Método de consulta [RESOLVIDO]

15 respostas
L

Boa Tarde Galera, td bem?
Estou com um problema no meu método de consulta, onde ele vai jogar nos JTextFields os dados encontrados no banco de dados selecionado...

O que está acontecendo? É o seguinte... ele devolve alguns falores, principalmente Strings, porem com int, float, etc ... ele devolve ou 0(zero), ou o número porém corta os 0(zeros) se eles estiverem por último ou em primeiro ex: 04822 devolve 4822 ... ou não devolve nada ...

Segue os métodos

public ClienteBean consulta_cliente(ClienteBean dados){
        try{
            String comando = "SELECT * FROM TB_Cliente WHERE CPF =?";
            PreparedStatement stm = conexao.prepareStatement(comando);
            stm.setLong(1, dados.getCpf());
                        
           ResultSet resultado = stm.executeQuery();
          return dados;             
        }               
        catch(SQLException erro){
            return null;
        }
        
//este faz a busca no bando de dados
    }

este a seguir é o Evento do botão responsável pelo método consultar

private void b3ActionPerformed(java.awt.event.ActionEvent evt) {                                   
        ClienteDAO cli = new ClienteDAO();
        boolean sucesso = false;        
        
        if(CarregaDados());       
            ClienteBean corvar = cli.consulta_cliente(cib);
        if(corvar != null){                
           long cpf = corvar.getCpf();
           t1.setText(corvar.getNome());            
           t2.setText(corvar.getSexo());
           t3.setText("" + corvar.getCpf());
           t4.setText("" + corvar.getDtd_nascimento()); 
           t5.setText("" + corvar.getTelefone());
           t6.setText("" + (corvar.getCelular()));
              }
        else{
            JOptionPane.showMessageDialog(this, 
              "Cliente Inexistente!");
            }
    }

Se alguém puder me ajudar, eu agradeço desde já :D

15 Respostas

InicianteJavaHenriqu

Cortando os zeros :?: Estranho. Caso você tente exibir (só para teste) no System.out.print(); também exibi este corte/erro ou é só nos JTextFields :?:

L

InicianteJavaHenrique fiz o teste e aparece o seguinte, com o system…

o valor referente ao telefone no aplicativo não devolve nada, porém no System devolveu o 3.53713E7 o valor existente no banco seria 35371309

o valor so celular foi 5.4414E7 o valor real é 54414021

No cep 4840120

o número apareceu 0 ao invés de 300

e o complemento que é do tipo String, mas tem número, não devolveu nada …

e agra :confused: ??

F

As variáveis do banco são numéricas não são não?

Coloca elas como string.

L

felipeaps
Se eu colocar as tabelas do banco como String, ou seja, VARCHAR, não vai dar erro na hora de gravar os dados?

F

Por que daria erro??

Pensa comigo. Você tem uma variável CPF. CPF não é um número, é uma String que contém dígitos, correto?
Você não pode tratá-lo como um número. A mesma coisa acontece com telefone, RG etc.

Se no banco vc ta com variável numérica ele vai tratar a variável como um número. Por isso ele volta esse “E” no meio dos dígitos, ou tira os zeros do começo.

L

felipeaps
Eu pensei, pois no código está com outro tipo, mais eu vou testar o que vc me disse mais tarde, agr não dá :s ai depois falo se deu certo ou não, e agradeço pela atenção

InicianteJavaHenriqu

Isto foi um erro de digitação :?: ou que tipo de consulta é está:

L

Não não, coloquei o sinal de interrogação, pois não sei qual o valor do cpf, ou seja, quando o usuário colocar um valor para cpf, ele vai no banco e ve se é válido…

se eu colocasse um valor para o cpf, ele só iria selecionar o usuário com aquele cpf que foi gravado

ex:

Select * From Tb_Cliente Where cpf = 1;

o programa só vai trazer o cliente no caso que tenha o valor 1 no cpf

L


InicianteJavaHenrique

Fiz o que vc falou, de mudar no tabela do banco de dados, os valores de int, float, para String … e na hora de salvar, deu erro, pois em alguns campos (os que são do tipo int e float) apresentam números …

Tem uma outra sugestão?

E

5.4414E7 é a mesma coisa que 54414000 - mas isso indica que você está usando “float” ,que é um lixo para tratar com números. No seu caso, use um tipo numérico mais adequado. Por exemplo, um CPF deve ser tratado normalmente como string

L

entanglement

Td bem cara?

Então, eu já fiz essa mudança de float para int … e a resposta agora foi outra, justamente a que vc citou … no celular apareceu 54414000 onde deveria ser 54414021, e no telefone apareceu 35371300 onde deveria ser 35371309…

Esse 0 no meio do número pode estar atrapalhando?

E pq CPF, é melhor ser declarado como uma String?

F

Já falei isso.

RG, CPF, telefones não são números, são strings. Vc vai fazer alguma conta com o CPF?

Tipo: (CPF1 - CPF) * 5 ??? Isso pra mim não existe. A mesma coisa com o telefone, por isso sempre trato como string.

L

felipeaps

Desculpa, tinha intendido outra coisa quando você me explicou, fui fazer o teste agora e deu o resultado …

vlw

F

Sussa, se solucionou coloca [RESOLVIDO] no título do tópico! :smiley:

L

Sim, eu só vou terminar de fazer todos os testes para ver se resolvi o problema de consulta de todas as janelas, quando resolvido, coloco no tópico :wink:

Criado 22 de março de 2012
Ultima resposta 23 de mar. de 2012
Respostas 15
Participantes 4