Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/02/2012, 14:20
andresfgs3
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 12 años, 6 meses
Puntos: 0
Problema con ResultSet

Hola, tengo el siguiente código

GestorBaseDatos gbd = GestorBaseDatos.GetInstance();
gbd.conectar();
ResultSet rs1 = gbd.consulta("SELECT * FROM ContextReadings cr, UserReadings ur ON cr.RFID=ur.RFID WHERE cr.RFID='" +rfid+"'");

String res = rs1.getInt("Light") + ", " + rs1.getInt("Temperature") + ", " + rs1.getString("Position") + ", " + rs1.getString("RFID") + ", " + rs1.getTime("timestamp");
System.out.println(res);

while(rs1.next()) {
System.out.println("Entro al while");
ContextoEntorno centorno = new ContextoEntorno();
centorno.setMedidaI(rs1.getString("RFID"));
centorno.setMedidaL(rs1.getInt("Light"));
centorno.setMedidaT(rs1.getInt("Temperature"));
u.setContextoE(centorno);
rs1.close();

}

...

El problema está que el programa me lanza la excepción ResultSet closed en la línea String res = rs1.getInt("Light") +.... y por ende no entra al while.

¿Por qué me sucede eso? ¿Es un problema de la query?

Vale anotar que antes en otra clase hago otra consulta y funciona perfecto y cierro la consulta y la conexión a la base de datos.

Aquí está la clase GestorBaseDatos

public class GestorBaseDatos {

Connection conn;
private static GestorBaseDatos instance = null;

private GestorBaseDatos() {
}

public static GestorBaseDatos GetInstance() {
if (instance == null) {
instance = new GestorBaseDatos();
}

return instance;
}

public void conectar() throws Exception {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:src/bd/labinteligente.sqlite");


}

public ResultSet consulta(String consulta) throws Exception{

System.out.println(consulta);
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(consulta);
System.out.println("Hizo la consulta");
return rs;
}

public void cerrarConexion() throws Exception{
conn.close();
}

}