Return a SQL result [duplicate]

-1

I have a query in sql that is returning me the wrong way.

It is returning like this:

[Cidade.Cidade@1d8b06a, Cidade.Cidade@251a5c, Cidade.Cidade@15ec3c1

and I would like it to return like this

Acrelândia
Assis Brasil

Follow the method code:

Class City:

package Cidade;

public class Cidade {

    private String nom_cidade;
    private String estado;

    public String getNom_cidade() {
        return nom_cidade;
    }
    public void setNom_cidade(String nom_cidade) {
        this.nom_cidade = nom_cidade;
    }
    public String getEstado() {
        return estado;
    }
    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String toString(){
            return this.nom_cidade;
    }
}

CidadeDao class

public class CidEstDao extends GenericDao {

    public List<Cidade> getCidadeByEstado(String nom_cidade) throws Exception {
        String select = "SELECT nom_cidade FROM cidade WHERE estado = ?";
        Cidade cidade = null;
        PreparedStatement stmt = getConnection().prepareStatement(select);
        List<Cidade> cidades = new ArrayList<Cidade>(); 
        stmt.setString(1, nom_cidade);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            cidade = new Cidade();
            cidade.setNom_cidade(rs.getString("nom_cidade"));
            cidades.add(cidade);
        }
        rs.close();
        stmt.close();
        return cidades;
    }
}

ClassEstController City

public class CidEstController {

    public List<Cidade> buscaCidadePorEstado (String nom_cidade) throws Exception{
        CidEstDao dao = new CidEstDao();
        return  dao.getCidadeByEstado(nom_cidade);
    }
}

Main class

private List<Cidade> cidadePorEstado() throws Exception {
        CidEstController cc = new CidEstController();
        try {
            //List<Cidade> c = cc.buscaCidadePorEstado(uf);
             //List<Cidade> listaCidades = new ArrayList<>();
             //listaCidades = cc.buscaCidadePorEstado (uf);
           return cc.buscaCidadePorEstado (uf);
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Ocorreu um erro, tente novamente!n" + e.getLocalizedMessage());
        } catch (NullPointerException e){
            JOptionPane.showMessageDialog(this, "Contato não localizdo ou não existe!n" + e.getLocalizedMessage());
        }
        return Collections.emptyList();
    }
    
asked by anonymous 21.05.2017 / 04:25

2 answers

-2

I was able to solve my problem as follows

try {
            for (Cidade a : cidadePorEstado()) 
                boxCidade.addItem(String.valueOf(a));

                    ;
        } catch (Exception ex) {
            Logger.getLogger(CadCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
    
24.05.2017 / 22:34
3

What is explained in the links I've posted to other questions is that to display something more custom from an object instead of nomeDaClasse@hashcode , which is the default view created by java, you need to override the toString() method of the class , in your case, City.

As you have not given any information of this class, I will suggest a blind example:

@Override
public String toString(){
   return this.nome;//aqui você troca NOME pela 
                    //variavel que representa o nome da cidade na sua classe
}

Add this method to class Cidade and problem solved.

    
21.05.2017 / 05:18