Retornar ResultSet [RESOLVIDO]

Olá, boa tarde à todos, este é meu primeiro tópico e gostaria da ajuda de vocês…
Estou querendo refatorar o código do sistema da minha empresa, já que é repetido diversas vezes a mesma linha de codigo no sistema, entao criei o método abaixo para que retorne um resultset, mas esta dando erro no return

[code]private ResultSet retornaConsulta(String sql) {
try {
Statement st = conn.createStatement();
ResultSet rs = null;
rs = st.executeQuery(sql);
} catch (SQLException ex) {
ex.printStackTrace();
}

    return rs; //<erro aqui no rs, cannot find Symbol
}[/code]

No método que irá chamar o retornaConsulta é assim

public void importaEstados() { Statement st; try { st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from estados"); while (rs.next()) { String descricaoEstado = rs.getString("descricao"); System.out.println("Salvando estado: " + descricaoEstado + " "); UF uf = new UF(); uf.setNome(descricaoEstado); uf.setSigla(descricaoEstado); uf.setFreteMaritimo(rs.getBoolean("freteMaritimo")); salvaAcao.save(uf); System.out.println("Estado Salvo."); } st.close(); } catch (SQLException e) { e.printStackTrace(); } }

Então gostaria de refatorar para ficar apena assim

public void importaEstados() { try { ResultSet rs =retornaConsulta("select * from estados"); while (rs.next()) { String descricaoEstado = rs.getString("descricao"); System.out.println("Salvando estado: " + descricaoEstado + " "); UF uf = new UF(); uf.setNome(descricaoEstado); uf.setSigla(descricaoEstado); uf.setFreteMaritimo(rs.getBoolean("freteMaritimo")); salvaAcao.save(uf); System.out.println("Estado Salvo."); } } catch (Exception e) { e.printStackTrace(); } }

E refatorando com o metodo que eu estou fazendo, numa classe de 6k de linhas vai dar uma economia de linhas de código, e ficar melhor a manutenção. Então gostaria de saber o que está dando de erro no return do meu método.
Desde já agradeço a ajuda!

Seria bom colocar o erro.

Variáveis só valem dentro do bloco de código (delimitado por chaves) onde foram declaradas. Esse é um conceito básico de escopo.
No seu caso, há um bloco do try, e a variável foi criada lá dentro. Ela obviamente não será visível fora. Para resolver, declare o resultset fora do try:

[code]private ResultSet retornaConsulta(String sql) {
ResultSet rs = null;
try {
Statement st = conn.createStatement();

        rs = st.executeQuery(sql);
    } catch (SQLException ex) {
        ex.printStackTrace();
    }

    return rs; 
}[/code]&gt;

Esse código, aliás, tem diversos problemas:
a) Mantém conexões e statements abertos;
b) Mantém o ResultSet aberto.
c) Não tem o cuidado de fechar nada no finally.

Se quiser refatorar o código da sua empresa de verdade, adicione o Spring no seu projeto, e use as classes dele. Ele copia o conteúdo do ResultSet para um CachedRowSet automaticamente, e mantém tudo fechado: conexões, statements e resultsets. Evita assim desperdício de recursos na sua aplicação, ou leaks que podem levar ao crash.

Valeu ViniGodoy pelas duas dicas, o erro que estava dando antes foi resolvido, e o resto irei estudar e aplicar.