Cita:
Iniciado por Xerelo Los arrays empiezan en índice 0, no en 1.
int c = 1;
Está mal
Cierto, lo empecé en 1 porque con el random usaba el +1, evitando que apareciese el 0, pero claro, al usar el +1 daba error indexoutofbounds...
Igualmente, sigo con el mismo fallo
Voy a probar si me devuelve correctamente el id en el resultset, usando una variable en vez de un array
EDIT: Voy cerrando el cerco para encontrar el fallo, he usado una variable solo en vez de array, y funciona correctamente, por lo que se que el valor en el resultSet no es null
Código:
public int ejemplarRand(int idLi) throws SQLException {
//int numEj = numEjemplar(idLi);
int c = 0;
int numRand = 0;
int ejReturn = 0;
conectar();
resultSet = statement.executeQuery("SELECT idEjemplar FROM ejemplares WHERE idLibro=" + idLi + " and idEjemplar NOT IN(SELECT idEjemplar FROM prestamos WHERE idLibro=" + idLi + " and fechaDevolucion is NULL)");
/*resultSet.last();
String[] idEjemplar = new String[resultSet.getRow()];
resultSet.first();
while (resultSet.next()) {
idEjemplar[c] = Integer.toString(resultSet.getInt("idEjemplar"));
c++;
}
numRand = (int) (Math.random() * idEjemplar.length);
ejReturn = Integer.parseInt(idEjemplar[numRand]);*/
while(resultSet.next()){
ejReturn = resultSet.getInt("idEjemplar");
}
desconectar();
return ejReturn;
}
He dejado comentado las lineas que pueden dar el fallo y añadido el bucle while para la variable, funciona porque yo sé que la consulta solo me va a dar 1 fila, pero para mas ya no funcionaria como debería