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

Tamaño de un Resultset

Estas en el tema de Tamaño de un Resultset en el foro de Java en Foros del Web. Buenas a todos. Quería saber cómo determinar el tamaño de un resultset. Pero sin mover el puntero. ok? No he visto ninguna función que me ...
  #1 (permalink)  
Antiguo 25/05/2009, 02:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 169
Antigüedad: 14 años, 11 meses
Puntos: 3
Tamaño de un Resultset

Buenas a todos.
Quería saber cómo determinar el tamaño de un resultset. Pero sin mover el puntero. ok? No he visto ninguna función que me lo diga directamente.
Si alguien me puede ayudar...
  #2 (permalink)  
Antiguo 25/05/2009, 05:34
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Tamaño de un Resultset

Wenas

Sin mover el puntero... chungo.

Lo que puedes hacer es crear el resultset de tipo TYPE_SCROLL_INSENSITIVE, que te permitira 'navegar' por el resultset de arriba a abajo. Una vez hecho esto, te vas al ultimo registro. Obtienes el numero de fila, y vuelves al principio.

Saludos.
  #3 (permalink)  
Antiguo 25/05/2009, 09:20
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Tamaño de un Resultset

Es bastante complicado puesto que hay BDDs en las que directamente ese valor no es recuperable sin ir al final del resultset. Habra drivers JDBC o librerías que te lo digan, pero en realidad lo que harán será ir hasta el final del resultset sin que tu lo sepas y darte ese valor.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 25/05/2009, 14:52
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 113
Antigüedad: 15 años
Puntos: 1
Respuesta: Tamaño de un Resultset

Yo tenia ese problema para saber si el resulset estaba vacio o no. Seguramente se puede hacer de otra manera, no lo encontré.
Supuse que si sabia el numero de registros del resulset sabria si estaba vacia o no.

En el archivo que podeis bajar en la dirección que pongo en el topic:
"Pasar valores a metodo" ultimo mensaje el día 21 de Mayo

Lo siento, pero hasta que no tenga 30 dias y 30 mensajes no puedo postear direcciones. Asi que si alguien tiene alguna pega o no lo encuentra que me lo pida por privado.

Un saludo
  #5 (permalink)  
Antiguo 26/05/2009, 01:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 169
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Tamaño de un Resultset

Ok, gracias a todos.
Tendré que solucionarlo con los típios next(), first() y contar las filas.
Saludos
  #6 (permalink)  
Antiguo 26/05/2009, 01:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Tamaño de un Resultset

Otra solución es hacer un select count(*) con la misma clausula where. Son dos queries en lugar de uno, pero si hay muchas filas y no las has de procesar todas obligatoriamiente, recorrerlas puede ser muy poco eficiente.

En caso de poder, otra opción es trabajar "sin saber esa información". Es decir, si no hace falta saber el numero exacto pero simplemente si hay mas o no, trabajar con eso. Claro que no siempre es posible.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 26/05/2009, 04:20
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Tamaño de un Resultset

Yo soy partidario de no hacer consultas 'evitables' a la BBDD, a no ser que no haya mas remedio.

En este caso concreto, antes de hacer dos consultas, yo propondria almacenar el resultset en algun objeto que nos permitiera saber su tamaño de un modo sencillo, estilo ArrayList, Vector...

Para saber su tamaño, solo tendrias que hacer un size() y 'sanseacabo'.

Saludos.
  #8 (permalink)  
Antiguo 26/05/2009, 06:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Tamaño de un Resultset

Claro, pero si tienes 1 millon y pico de registros, almacenarlos todos en memoria para hacer un size() es un desperdidicio de memoria. Por eso digo "si no las has de procesar todas" y aun que lo tuvieras que hacer, segun el numero de registros por que meterlas todas en memoria es una buena forma de "hacer saltar la banca".

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #9 (permalink)  
Antiguo 26/05/2009, 13:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Tamaño de un Resultset

la interfaz ResultSetMetaData te permite obtener informacion sobre las caracteristicas de los datos referenciados por un resulset, puedes hacer lo siguiente:

ResultSetMetaData rd = myresulset.getMetaData(); // Obtenemos el metadata desde el resulset
int columnas= rd.getColumnCount(); // devuelve el numero de campos o columnas del resulset

Espero te sirva! creo que no consume mucho pues lo que hace es referenciar al resulset.
  #10 (permalink)  
Antiguo 26/05/2009, 14:14
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: Tamaño de un Resultset

me retracto de lo que dije

Última edición por drac94; 26/05/2009 a las 20:59 Razón: por no poner atencion a lo que leo XD
  #11 (permalink)  
Antiguo 26/05/2009, 14:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Tamaño de un Resultset

Cita:
int columnas= rd.getColumnCount(); // devuelve el numero de campos o columnas del resulset
Numero de columnas != numero de registros
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #12 (permalink)  
Antiguo 27/05/2009, 06:08
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Tamaño de un Resultset

Cita:
Iniciado por GreenEyed Ver Mensaje
Claro, pero si tienes 1 millon y pico de registros, almacenarlos todos en memoria para hacer un size() es un desperdidicio de memoria. Por eso digo "si no las has de procesar todas" y aun que lo tuvieras que hacer, segun el numero de registros por que meterlas todas en memoria es una buena forma de "hacer saltar la banca".

S!
Claro, por eso digo 'si no hay mas remedio'.

Saludos.
  #13 (permalink)  
Antiguo 27/05/2009, 07:13
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Tamaño de un Resultset

Cita:
Iniciado por GreenEyed Ver Mensaje
Numero de columnas != numero de registros
Ups!!! habia entendido mal xD
  #14 (permalink)  
Antiguo 29/05/2009, 01:51
 
Fecha de Ingreso: mayo-2009
Mensajes: 169
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Tamaño de un Resultset

Gracias por las respuestas.
En realidad no necesitaba saber el número de filas exacto, sino sólamente si había más de una fila como dijo GreenEyed.
De todas formas quería saber si había una forma sencilla de saber el número, ya veo que no.
Gracias por todo.
  #15 (permalink)  
Antiguo 04/04/2012, 16:24
Avatar de sara_lissette  
Fecha de Ingreso: mayo-2011
Ubicación: San Cristóbal de La Laguna, Spain
Mensajes: 2
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Tamaño de un Resultset

Aunque ya está pasado de fecha pero por si a alguien más le ocurre como a mí que entra en el tema buscando una solución, acabo de hacerlo con lo siguiente:
rs.last() /* Ir al último registro del ResultSet (rs) */
rs.getRow() /* Devuelve la posición del cursor o número de registro que tiene en ese momento el ResultSet */

Última edición por sara_lissette; 04/04/2012 a las 16:30 Razón: Corrección
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 20:04.