Retornar um resultado de SQL?

2 respostas Resolvido
postgresqljavamysql
Diego_Gomes_Dias

Estou com uma consulta em sql que está me retornando de uma forma errada.

Ele esta retornando assim?

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

e eu gostaria que retornasse assim

Acrelândia
Assis Brasil

Segue o código do método:

Classe 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;
        }
    }

Classe CidadeDao

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;
        }
    }

Classe CidadeEstController

public class CidEstController {

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

Classe principal

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();
        }

2 Respostas

4mega

como ele está armazenando e como o campo está definido no banco? Verifique se o campo está como varchar

E
Solucao aceita

Bom dia
Você está retornando uma lista de objeto e na hora de exibir esta exibindo o endereço do objeto, você deve tratar aonde você for exibir na camada view, como nã sei se é web o desk que você esta fazendo, na teoria você terá que fazer um for each para varrer a lista e pegar somente o atributo nome da cidade.
Exemplo:

for(Cidade c : dao.getCidadeByEstado(nom_cidade)){
System.out.println(c.getNom_cidade());
}

Esta é a lógica só basta você adaptar ao seu código.
Espero ter ajudado

Criado 21 de maio de 2017
Ultima resposta 22 de mai. de 2017
Respostas 2
Participantes 3