Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/05/2015, 02:28
antoniower
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 9 años
Puntos: 0
Respuesta: Fallo al intentar pasar un null a Integer

Cita:
Iniciado por Xerelo Ver Mensaje
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

Última edición por antoniower; 27/05/2015 a las 02:39