Cerrar ResultSet

luix
03 de Julio del 2002
Hola!
Tengo una función que me cierra un ResultSet y un Statement (rs.close(); y st.close();), para asegurarme de liberar los recursos de una conexión a base de datos. El problema es que no se como asegurarme antes de cerrar esos objetos de que NO están ya cerrados. He probado comprobando si estos objetos son null, pero aunque ya estén cerrados los objetos no son nulos. Buscaba algo del estilo de isClosed(), pero no he visto nada.
¿Alguién sabe como asegurarse de que un ResultSet o un Statement están o no cerrados?

Saludos

alberto
03 de Julio del 2002
Una cosa que debes tener en cuenta es que los ResultSet se pueden cerrar antes de que tu creas.
Por ejemplo observa:

ResultSet rs1=stament.executeQuery(query1);
if(rs1.next())
String x=rs1.getString(1); //rs1 aun esta abierto

ResultSet rs2=statement.executeQuery(query2);
if(rs2.next())
String y=rs2.getString(1); //rs2 esta abierto pero rs1 ya se cerro por haber utilizado el mismo objeto statement de tal forma que:
int entero=rs1.getInt(2); //lanzara una SQLException, pues rs1 ya está cerrado.


sanchez
03 de Julio del 2002
De la forma que lo esta haciendo asegura que si los esta cerrando, una forma 100% segura seria ingresando estas instrucciones en el finally.

James
03 de Julio del 2002
Para asegurarse de que se cierren los recursos de DB se debe hacer en el finally
"
try{stm.close();}catch(Exception e){}
try{rst.close();}catch(Exception e){}
"
de esta forma es totalmente si el objeto ya se habia cerrado o era nulo.