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();
}
}