Return ResultSet pros y contras

Matriax
22 de Septiembre del 2004
Hola Amigos del foro, tengo una duda para compartir...
Que problemas tendria si creo una funcion de este tipo

private ResultSet getConsulta(String strSQL){
try{
this.getConnection();
Statement stmt = this.connection.createStatement();
ResultSet rs = stmt.executeQuery(strSQL);
stmt.close();
this.releaseConnection();
return rs;
}
catch(SQLException e){
this.releaseConnection();
return null;
}
}

¿¿Que problemas puedo tener al no cerra el resultset (rs.close())??
Mi idea es crear esta funcion de forma tal de que todas las consultas que quiera hacer las haga por medio de esta funcion. Pero mi duda surgio al pensar ¿que pasa si no cierro el resultset?
Gracias

Destrent
22 de Septiembre del 2004
No te recomiendo que lo hagas así, sobre todo si vas a llamar muchas veces a esa función. Yo hace unos meses tardé una casi una semana en descubrir porque se me iba de memoria en un servidor Weblogic una aplicación y fue por dejar abierto un ResultSet en una función que se llamaba cientos o miles de veces.
Si hablas de dejar abiertos pocos ResulSet (es decir, no vas a llamar demasiado a esa función) no tendrás problemas, pero no te lo recomiendo porque es una fuente de errores para el futuro. Te recomiendo que pases la información del ResultSet a algún otro objecto (ArrayList, TreeMap...) y devuelvas este objeto.

Un saludo.