Consulta para meter el resultado de un ResultSet en un HashTable.

afhn

Saludos compañeros.
Veréis, tengo un pequeño problemilla con una práctica que nos enviaron para hoy, el problema es que piden hacerlo con HashTable, y apenas tengo idea de como manejarlo ya que, en el día que explicaron cómo funciona había faltado porque estaba enfermo.
El código es el siguiente:

spoiler

Tengo que insertar el resultado de una cantidad de jugadores que me de el ResultSet en el HashTable, el problema es que, sólo mete una vez el objeto, o sea, sólo inserta la primera entrada con su key y el valor, pero no pasa a la siguiente entrada.
Ejemplo: tengo 10 jugadores, pues sólo me mete el primer jugador con su key y resultado, y no pasa a la siguiente entrada para el siguiente jugador.
Alguna ayudita? Qué es lo que tengo mal en el código?
Gracias de ante mano.

JuAn4k4

Mueve el

int codigo=0;

fuera del while.

1 respuesta
B

Para empezar asi mirandolo muy por encima, no tendrias que inicializar la variable que te hace de index "codigo" del bucle while, antes del cuerpo del bucle?, sino te la pone a 0 cada iteración del bucle.

1 respuesta
afhn

#2 #3 vale, vale, el error no estaba ahí, se me pasó lo de no poner las variables dentro de los bucles, pero aun así, sólo me mete una entrada.

Lecherito

No tiene que ver mucho con el problema pero siempre es bueno acostumbrarse a hacer las cosas bien, y hashtable no es hacer las cosas bien. Desde java 1.2 lleva deprecada xD

As of the Java 2 platform v1.2, this class was retrofitted to implement the Map interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Hashtable is synchronized. If a thread-safe implementation is not needed, it is recommended to use HashMap in place of Hashtable. If a thread-safe highly-concurrent implementation is desired, then it is recommended to use ConcurrentHashMap in place of Hashtable.

https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html

Zerokkk

¿Y por qué no usas un ArrayList y pista?


ArrayList<Jugador> lista = new ArrayList();

// sentencia SQL y ejecución de la misma

ResultSet resultado = miStatement.executeQuery(sqlListado);
   while(resultado.next()){
   Jugador j = new Jugador();
    // damos valores a través de los setters de j y getters de resultado
    lista.add(j);
}




1 respuesta
afhn

#6 si fuese por mí, lo haría con un ArrayList, el problema es que, la práctica hay que hacerla con HashTable. :(

1 respuesta
Zerokkk

#7 Pero si lleva deprecated mil años, eso no sirve para nada.

Lo más parecido que le encuentro es un HashMap, y entonces el cambio sería solamente éste:

HashMap hs = new HashMap();

// sentencia SQL y ejecución de la misma

ResultSet resultado = miStatement.executeQuery(sqlListado);
int count = 0;
   while(resultado.next()){
   Jugador j = new Jugador();
    // damos valores a través de los setters de j y getters de resultado
   hs.put(count, j);
    count++;
}

Si en cambio tienes que darle algún tipo de ID sacado de la base de datos como clave, pues ya sabes, primer parámetro del hashmap, resultado.get("id");, y pista.

1 respuesta
afhn

#8 Ya, pero y yo qué le puedo hacer, es tajante, no puedo cambiar la forma, o HashTable o me machacan la práctica xd. Esto es blanco o negro, a mí sinceramente, no me importaría hacerlo de otra manera mientras funcione, pero es eso.... o HashTable o adiós práctica.
Y el problema sigue siendo lo mismo. Me estoy volviendo loco U.U.

B

Profesores enseñando cosas que ya están obsoletas. Nada nuevo bajo el sol.

afhn

Ya está solucionado. Gracias igualmente a todos.

1 respuesta
Amazon

#11 mola, gz :D

Por cierto, ¿dónde estudias?

Usuarios habituales