Retorno da consulta em JTextfield

Bom dia gurizada, sei que tem milhares de topicos iguais a este aqui, e na web, mas realmente esta penoso para conseguir oque quero, então lá vai, tenho a classe CorreiosBean:[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.financeira.correios;

/**
*

  • @author rafael
    */
    public class CorreiosBean {
    public CorreiosBean(){
    }

    private Integer id;
    private String logradouro;
    private String complemento;
    private String cep;
    private String bairro;
    private String cidade;
    private String uf;

    /**

    • @return the id
      */
      public Integer getId() {
      return id;
      }

    /**

    • @param id the id to set
      */
      public void setId(Integer id) {
      this.id = id;
      }

    /**

    • @return the logradouro
      */
      public String getLogradouro() {
      return logradouro;
      }

    /**

    • @param logradouro the logradouro to set
      */
      public void setLogradouro(String logradouro) {
      this.logradouro = logradouro;
      }

    /**

    • @return the complemento
      */
      public String getComplemento() {
      return complemento;
      }

    /**

    • @param complemento the complemento to set
      */
      public void setComplemento(String complemento) {
      this.complemento = complemento;
      }

    /**

    • @return the cep
      */
      public String getCep() {
      return cep;
      }

    /**

    • @param cep the cep to set
      */
      public void setCep(String cep) {
      this.cep = cep;
      }

    /**

    • @return the bairro
      */
      public String getBairro() {
      return bairro;
      }

    /**

    • @param bairro the bairro to set
      */
      public void setBairro(String bairro) {
      this.bairro = bairro;
      }

    /**

    • @return the cidade
      */
      public String getCidade() {
      return cidade;
      }

    /**

    • @param cidade the cidade to set
      */
      public void setCidade(String cidade) {
      this.cidade = cidade;
      }

    /**

    • @return the uf
      */
      public String getUf() {
      return uf;
      }

    /**

    • @param uf the uf to set
      */
      public void setUf(String uf) {
      this.uf = uf;
      }
      }
      [/code]

a classe CorreiosControl[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.financeira.correios;

import br.com.financeira.acesobd.AcessoPostgres;
import br.com.financeira.cliente.ClienteBean;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
*

  • @author rafael
    */
    public class CorreiosControl {
    PreparedStatement pstm;
    ResultSet rs;
    AcessoPostgres bd = new AcessoPostgres();

    String consultaCep = “SELECT * FROM CORREIOS_CEPS WHERE CEP LIKE ?”;

    public CorreiosControl(){
    }

public List listarCep(String cep){
List correios = new ArrayList();
try{
pstm = bd.conectar().prepareStatement(consultaCep);
pstm.setString(1, cep);//SELECT * FROM CLIENTES WHERE NOME LIKE rafa
rs = pstm.executeQuery();
CorreiosBean cor;
while (rs.next()){
cor = new CorreiosBean();
cor.setId(rs.getInt(“id”));
cor.setLogradouro(rs.getString(“logradouro”));
cor.setCep(rs.getString(“cep”));
cor.setBairro(rs.getString(“bairro”));
cor.setCidade(rs.getString(“cidade”));
cor.setUf(rs.getString(“uf”));
correios.add(cor);
}
bd.desconectar();
} catch(Exception e){
e.printStackTrace();
}
return correios;
}

}
[/code]

e esse form, a classe Clientes onde ele popula uma jtable [code] protected void listarCep(){
CorreiosControl cli = new CorreiosControl();
correios = cli.listarCep("%" + tfPesquisaCep.getText().trim() + “%”);
mostrarCep(correios);

}

protected void mostrarCep(List<CorreiosBean> correios){
    while (tmCorreios.getRowCount() > 0){
        tmCorreios.removeRow(0);
    }
    
    if (correios.size() == 0){
        JOptionPane.showMessageDialog(this, "Nenhum cep encontrado!");
    }else{
        String [] campos = new String[] {null, null, null, null, null};
        for (int i = 0; i < correios.size(); i++){
            tmCorreios.addRow(campos);
            tmCorreios.setValueAt(correios.get(i).getCep(), i, 0);
            tmCorreios.setValueAt(correios.get(i).getLogradouro(), i, 1);
            tmCorreios.setValueAt(correios.get(i).getBairro(), i, 2);
            tmCorreios.setValueAt(correios.get(i).getCidade(), i, 3);
            tmCorreios.setValueAt(correios.get(i).getUf(), i, 4);
        }
    }
}

[/code]

Oque acontece é que não consigo de maneira alguma ao inves de popular a jtable, trazer os resultados em campos de texto.
desde já obrigado

esse seu método que retorna um lista vai trazer apenas um coreio na lista ou vários?
se trazer vários, o problema vai ser selecionar o que vc quer e passar ele para os textfield’s.
seria melhor vc escolher ele na Jtable e depois passar para o textfield.

se trazer so um seria melhor alterar o retorno do metodo:

[code]public CorreiosBean listarCep(String cep){

    try{   
        pstm = bd.conectar().prepareStatement(consultaCep);   
        pstm.setString(1, cep);//SELECT * FROM CLIENTES WHERE NOME LIKE rafa   
        rs = pstm.executeQuery();   
        CorreiosBean cor;   
        while (rs.next()){   
            cor = new CorreiosBean();   
            cor.setId(rs.getInt("id"));   
            cor.setLogradouro(rs.getString("logradouro"));   
            cor.setCep(rs.getString("cep"));   
            cor.setBairro(rs.getString("bairro"));   
            cor.setCidade(rs.getString("cidade"));   
            cor.setUf(rs.getString("uf"));   
           return cor;   
        }   
        bd.desconectar();   
    } catch(Exception e){   
        e.printStackTrace();   
    }   
    return null;   
}   [/code]

para preencher o textfield faça assim:

[code]protected void listarCep(){
CorreiosBean correiosBean=new CorreiosBean();
CorreiosControl cli = new CorreiosControl();
correiosBean = cli.listarCep("%" + tfPesquisaCep.getText().trim() + “%”);

   textField.setText(correiosBean.getCampo()) ;

}
[/code]

Fazer isso é bem simples.

veja.

//bean
public class CorreiosBean{
     private Integer id;
     private String cep;
     //get e set
}


//DAO
public class CorreiosDAO {
     private Connection con;
public CorreiosDAO(){
    this.con = Conexao.getConnection();
}
public List<CorreiosBean> listarCep(String cep){
       List<CorreiosBean> lista = new ArrayList<CorreiosBean>();
       PreparedStatement stm = this.con.prepareStatement("SELECT * FROM correios WHERE cep = ?");
       stm.setString(1, cep);
       ResultSet rs = stm.executeQuery();
       while(rs.next()){
             CorreiosBean cb = CorreiosBean();
             cb.setId(rs.getInt("id"));
             cb.setString(rs.getString("cep"));
             lista.add(cb);
       }
       rs.close();
       stm.close();
       return lista;
}
}


//pegando os valores no FORM
List<CorreiosBean> lista = new CorreiosDAO().listarCep("14.114-000");
for(CorreiosBean cb : lista){
       id.setText(String.valueOf(cb.getId()));
       cep.setText(cb.getCep());
}

Simples.

t+ e boa sorte.

vlw gurizada, muito obrigado mesmo, realmente bem simples, mas não tava conseguindo, é só para um correio mesmo, digita o cep no
tfPesquisaCpf

correios = cli.listarCep("%" + tfPesquisaCep.getText().trim() + "%");

e a intenção seria retornar rua, bairro, cidade, uf … apenas referente ao cep.

bah gurizada agora deu certo, porém uma pequena duvida:

[code]String consultaCep = “SELECT * FROM CORREIOS_CEPS WHERE CEP LIKE ?”;

 public CorreiosControl(){

}

public CorreiosBean listarCep(String cep){

    try{     
        pstm = bd.conectar().prepareStatement(consultaCep);     
        pstm.setString(1, cep);//SELECT * FROM CLIENTES WHERE NOME LIKE rafa     
        rs = pstm.executeQuery();     
        CorreiosBean cor;     
        while (rs.next()){     
            cor = new CorreiosBean();     
            cor.setId(rs.getInt("id"));     
            cor.setLogradouro(rs.getString("logradouro"));     
            cor.setCep(rs.getString("cep"));     
            cor.setBairro(rs.getString("bairro"));     
            cor.setCidade(rs.getString("cidade"));     
            cor.setUf(rs.getString("uf"));     
           return cor;     
        }     
        bd.desconectar();     
    } catch(Exception e){     
        e.printStackTrace();     
    }     
    return null;     
}     

[/code]

se eu coloco a string sql como

String consultaCep = "SELECT * FROM CORREIOS_CEPS WHERE CEP LIKE ?";

ele me retorna outra rua que não é esse cep

se eu coloco como

String consultaCep = "SELECT * FROM CORREIOS_CEPS WHERE CEP = ?";

ele me da estes erros:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at br.com.financeira.view.Clientes.listarCep(Clientes.java:1708) at br.com.financeira.view.Clientes.btPesquisaCepActionPerformed(Clientes.java:1403) at br.com.financeira.view.Clientes.access$500(Clientes.java:38)

desde já vlw pelas dicas

aparentemente ta td certo…

ele ta dando erro na view click na linha do erro e olhe onde é.

eu falei pra vc alterar o tipo de retorno… se vc usa esse metodo em outro lugar tem que alterar lá tbm.

tentei mudar o retorno mas não me dei… e qualquer cep que eu digite ele sempre traz o mesmo endereço

estranho cara criei o msm método aqui para fazer um teste e está funcionando.

[code]public Correio retornaCorreio(String cep){

       try {
           String sql = "SELECT * FROM CORREIO WHERE CEP=?";
           ResultSet rs = executeQuery(sql,cep);
           while(rs.next()){
        	    Correio cor = new Correio();
        	    cor = new CorreiosBean();       
                cor.setId(rs.getInt("id"));       
                cor.setLogradouro(rs.getString("logradouro"));       
                cor.setCep(rs.getString("cep"));       
                cor.setBairro(rs.getString("bairro"));       
                return cor;
      	     
           }
          

       } catch (SQLException ex) {
           Logger.getLogger(CorreioDAO.class.getName()).log(Level.SEVERE, null, ex);
          
       }

    return null;
   }[/code]

seu método que passa o cep está passando o cep correto?
tente passar na mão msm pra vê se funciona.

[code]correio=retornaCorreio(“14.114-000”);
System.out.println(correio.getCep+","+correio.getId());

[/code]
aqui está funcionando.

cara realmente fiz tudo mas não esta rolando, alterei o codigo e tudo o mais e nada era.
se eu dou o select direto no banco ele funciona

se ao invés de [code]protected void listarCep(){
CorreiosBean correiosBean=new CorreiosBean();
CorreiosControl cli = new CorreiosControl();
correiosBean = cli.listarCep("%" + tfPesquisaCep.getText() + “%” );

   tfRua.setText(correiosBean.getLogradouro()) ;  

}
[/code]

eu colocar assim: [code]protected void listarCep(){
CorreiosBean correiosBean=new CorreiosBean();
CorreiosControl cli = new CorreiosControl();
correiosBean = cli.listarCep(“96060290”);

   tfRua.setText(correiosBean.getLogradouro()) ;
   tfBairro.setText(correiosBean.getBairro());
   tfCidade.setText(correiosBean.getCidade());
   tfUf.setText(correiosBean.getUf());

} [/code]

ele me retorna o endereço certinho, provavelmente na hora de pegar o valor do campo onde digito o cep. seria isto?

Cara se eu colocar assim ele retorna erro [code]protected void listarCep(){
CorreiosBean correiosBean=new CorreiosBean();
CorreiosControl cli = new CorreiosControl();
correiosBean = cli.listarCep("%" + tfPesquisaCep.getText() + “%”);

   tfRua.setText(correiosBean.getLogradouro()) ;
   tfBairro.setText(correiosBean.getBairro());
   tfCidade.setText(correiosBean.getCidade());
   tfUf.setText(correiosBean.getUf());

}
[/code]

mas se na linha de onde ele pega o valor do campo de testo eu colocar assim: [code]protected void listarCep(){
CorreiosBean correiosBean=new CorreiosBean();
CorreiosControl cli = new CorreiosControl();
correiosBean = cli.listarCep(“96060290”);

   tfRua.setText(correiosBean.getLogradouro()) ;
   tfBairro.setText(correiosBean.getBairro());
   tfCidade.setText(correiosBean.getCidade());
   tfUf.setText(correiosBean.getUf());

} [/code]

ele me retorna o endereço certinho.

Sera que o erro esta na hora que ele pega o valor do campo de texto?, derrepente teria de ficar entre aspas, ou aspas simples?

cara qual a função desse “%”?

 correiosBean = cli.listarCep("%" + tfPesquisaCep.getText() + "%");     

cara é que eu tenho um outro metodo onde faço uma pesquisa por nome ai uso o ‘LIKE’ no comando sql ai estas % é para digitar uma parte do nome, ai eu copiei a linha inteira, não achei que dese problema, mas já fiz sem este sinal e nada era tbémcorreiosBean = cli.listarCep(tfPesquisaCep.getText().trim());

muito estranho… se funciona colocando o cep diretamente… teria que funcionar passando o valor do textfield tbm.
coloca ae println pra vê se ele ta passando o valor correto.

protected void listarCep(){ CorreiosBean correiosBean=new CorreiosBean(); CorreiosControl cli = new CorreiosControl(); System.out.println( tfPesquisaCep.getText() ); correiosBean = cli.listarCep("%" + tfPesquisaCep.getText() + "%");

cara não retornou nada, agora nem erro me da mais, só não acontece nada…

a não se que eu altere na correiosControl, colocando o LIKE no lugar do =, só que ai ele me traz independente do cep que eu coloco, o mesmo endereço sempre

vc só add um System.out.println() e parou de funcionar??
entao o problema ta ae na sua view msm…
no minimo era para ta passando pro console oq vc digitou no textfield.

[quote=rafaezandinha]a não se que eu altere na correiosControl, colocando o LIKE no lugar do =, só que ai ele me traz independente do cep que eu coloco, o mesmo endereço sempre
[/quote]

não sei o que pode ser… como eu disse antes eu fiz o msm método e funcionou normalmente.
e fiz so um select normal(SELECT * FROM CORREIO WHERE CEP=?)

public  Correio  retornaCorreio(String cep){   
   
           try {   
               String sql = "SELECT * FROM CORREIO WHERE CEP=?";   
               ResultSet rs = executeQuery(sql,cep);   
               while(rs.next()){   
                    Correio cor = new Correio();   
                    cor = new CorreiosBean();         
                    cor.setId(rs.getInt("id"));         
                    cor.setLogradouro(rs.getString("logradouro"));         
                    cor.setCep(rs.getString("cep"));         
                    cor.setBairro(rs.getString("bairro"));         
                    return cor;   
                   
               }   
                 
   
           } catch (SQLException ex) {   
               Logger.getLogger(CorreioDAO.class.getName()).log(Level.SEVERE, null, ex);   
                 
           }   
   
        return null;   
       }  

não, na verdade depois que fiz umas alterações na cporreiosControl, ele parou de dar erro no “=”, porém não acontecia nada, somente se troco pelo “LIKE”, ELE ME TRAZ SEMPRE O MESMO CEP, AGORA tah assim a correiosControl:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.financeira.correios;

import br.com.financeira.acesobd.AcessoPostgres;
import br.com.financeira.cliente.ClienteBean;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
*

  • @author rafael
    */
    public class CorreiosControl {
    PreparedStatement pstm;
    ResultSet rs;
    AcessoPostgres bd = new AcessoPostgres();

    String consultaCep = “SELECT * FROM CORREIOS_CEPS WHERE CEP = ?”;

    public CorreiosControl(){
    }

CorreiosBean cb = new CorreiosBean();
public CorreiosBean listarCep(String cep){

    try{     
        pstm = bd.conectar().prepareStatement(consultaCep);     
        pstm.setString(1, cep);//SELECT * FROM CLIENTES WHERE NOME LIKE rafa     
        rs = pstm.executeQuery();     
        //CorreiosBean cor;     
        while (rs.next()){     
            cb = new CorreiosBean();     
            cb.setId(rs.getInt("id"));     
            cb.setLogradouro(rs.getString("logradouro"));     
            cb.setCep(rs.getString("cep"));     
            cb.setBairro(rs.getString("bairro"));     
            cb.setCidade(rs.getString("cidade"));     
            cb.setUf(rs.getString("uf"));     
           return cb;     
        }     
        bd.desconectar();     
    } catch(Exception e){     
        e.printStackTrace();     
    }     
    return cb;     
}     

}
[/code]

é na linha 23 que altero de = para like, só que no = ele nem gera erros, e no like nem mandou para o console…

Cara realmente muito obrigado pela ajuda, não que eu seja tapado, mas basicamente eu tinha dois campos de texto, tfPesquisaCep e tfPesquisaCep1, tava para fazer a pesquisa no tfPesquisaCep, e digitava no tfPesquisaCep1, kkkkkkkkkkk, que doidera, vlw…