Problemas com o Resultset

Boa tarde pessoal, estou iniciando em banco de dados agora, e tenho um problema que acho que será simples para a maioria de vocês,
mas que não consegui uma solução

A questão é que estou fazendo uma consulta SQL para verificar se existe uma determinada cidade ja cadastrada
Mas quando executo a consulta acontece o seguinte erro: java.sql.SQLException: After end of result set

Será que alguem pode me dar um help!

Vou postar o código

public boolean verificaCidade(String cidade) throws Exception {
    boolean retorno = true;
    String sql = "select nomeCidade from Cidade";
    PreparedStatement ps = conn.prepareStatement(sql);
    ResultSet rs = ps.executeQuery();

    while(retorno){
        rs.next();
        if(cidade.equals(rs.getString("nomeCidade"))){
            retorno = false;
        }
    }
    return retorno;
}

Desde já agradeço!

Amigo, o que você abriu tem de fechar. Senão vai ter problemas depois.

/** @return true se achar a cidade, false se não achar. */
public boolean verificaCidade(String cidade) throws Exception {
    boolean achou = false;
    String sql = "select nomeCidade from Cidade";
    PreparedStatement ps = conn.prepareStatement(sql);
    ResultSet rs = ps.executeQuery();
    while (!achou  && rs.next()) {
        if (cidade.equals (rs.getString ("nomeCidade"))) {
            achou = true;
        }
    }
    rs.close();
    ps.close();
    return achou;
} 

Valeu amigo era isso mesmo, essa realmente foi de iniciante hehehe

Valeu pela ajuda, essa não vou esquecer

Amigo, você não precisaria ter feito esse “while”. Na verdade, o mais correto é tratar essa condição no SQL:

 /** @return true se achar a cidade, false se não achar. */  
 public boolean verificaCidade(String cidade) throws Exception {  
     boolean achou = false;  
     String sql = "SELECT nomeCidade FROM Cidade WHERE nomeCidade = ?";
     PreparedStatement ps = conn.prepareStatement (sql);
     ps.setString (1, cidade);
     if (rs.next()) {
         achou = true;
     }
     rs.close();  
     ps.close();  
     return achou;  
 }

[quote=entanglement]Amigo, você não precisaria ter feito esse “while”. Na verdade, o mais correto é tratar essa condição no SQL:

/** @return true se achar a cidade, false se não achar. */ public boolean verificaCidade(String cidade) throws Exception { boolean achou = false; String sql = "SELECT nomeCidade FROM Cidade WHERE nomeCidade = ?"; PreparedStatement ps = conn.prepareStatement (sql); ps.setString (1, cidade); if (rs.next()) { achou = true; } rs.close(); ps.close(); return achou; } [/quote]

bem lembrado! valeu pela dica, pelo visto vou ter que estudar muito!!!