Hola,
tengo un pequeño problema a la hora de introducir un contador en un servlet. El código de mi método doGet es el siguiente:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
//Se mete todo en un try, por los posibles errores de MySQL
try
{
//Se registra el driver de MySQL
Class.forName("org.gjt.mm.mysql.Driver");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
//Se conecta a la base de datos
Connection conexion1 = DriverManager.getConnection("jdbc:mysql://localhost/paloma", "root", "contraseña");
//Se crea un Statement para llevar a cabo la consulta
Statement st1 = conexion1.createStatement();
ResultSet rs = st1.executeQuery("select * from tabla");
rs.last();
int m = rs.getRow();
rs.first();
int k = 1;
ResultSet rs1 = st1.executeQuery("select max(tiempo) as t from tabla group by uid order by t desc;");
//Obtenemos el número de filas del resultado de la consulta,
//que será igual al número de tarjetas RFID leídas.
rs1.last();
int n = rs1.getRow();
//Nos colocamos en la primera fila
rs1.first();
//Creamos un contador para controlar el número de veces que se repite el bucle
int i = 1;
//Se ejecuta el bucle mientras haya filas
LecturaBD lectura = new LecturaBD();
lectura.generaDocumentoXML();
while (i <= n) {
tiempo = rs1.getString(1);
//Se crea un nuevo Statement para llevar a cabo la nueva consulta
Statement st2 = conexion1.createStatement();
//Se obtienen de la tabla dinámica los datos buscados
ResultSet rs2 = st2.executeQuery("select * from tabla where tiempo='" + tiempo + "';");
//Creamos otro contador para controlar el número de veces que se repite este otro bucle
int j = 1;
while (rs2.next())
{
//Se compara el tiempo de la pda con la que se ha realizado la lectura
//con las que hay almacenadas en la base de datos rfid
if (tiempo.equals(rs2.getString(8)))
{
id = k;
//Se obtienen los valores buscados
uid = rs2.getString(7);
pda_mac = rs2.getString(1);
id_dispositivo = rs2.getInt(5);
id_sensor = rs2.getInt(6);
pr = rs2.getDouble(4);
posX = rs2.getInt(2);
posY = rs2.getInt(3);
//Se incrementa el segundo contador
j++;
Datos dato = new Datos(id, uid, pda_mac, id_dispositivo, id_sensor, pr, posX, posY, tiempo);
lectura.generarDocumentoXMLDato(dato);
}
}
//Se incrementa el primer contador
i++;
//Se cierra el ResultSet rs2
rs2.close();
//Avanzamos a la siguiente fila de la tabla
rs1.next();
}
//Se cierra el ResultSet rs1
rs1.close();
//Se cierra la conexión con la base de datos
conexion1.close();
String textoXML = lectura.obtenerTextoXML();
lectura.guardarDocumentoXML(textoXML);
writer.println(textoXML);
}
catch (Exception e)
{
//Capturamos los errores, si los hubiera
e.printStackTrace();
}
}
Mi objetivo es que id sea igual a un número entre 1 y k (que es el número total de filas), por lo que supongo que debería crear un bucle para lograr esto. El problema es que no sé dónde ponerlo, pues he hecho diversas pruebas y en ningún caso funciona correctamente. ¿Alguien podría echarme una manita?
Muchas gracias y un saludo,
Paloma