Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con ResultSet

Estas en el tema de Problema con ResultSet en el foro de Java en Foros del Web. 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+"'"); ...
  #1 (permalink)  
Antiguo 17/02/2012, 14:20
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 13 años
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();
}

}
  #2 (permalink)  
Antiguo 18/02/2012, 05:03
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Problema con ResultSet

Hola:

Una vez que obtienes el resultset, hay que hacer una llamada a next() antes de empezar a consultar nada. El getInt() que tienes antes de entrar en el bucle, posiblemente esté dando el fallo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 19/02/2012, 04:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 8 meses
Puntos: 17
Respuesta: Problema con ResultSet

hola!

el problema está en que haces

Código:
rs1.close();
dentro del while, por lo que en la primera vuelta el resultSet queda cerrado y no puede hacer más vueltas.

Esa linea debe ir fuera del while.

Saludso

Etiquetas: clase, programa, resultset, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:07.