Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 22-nov-2005, 05:17   #1 (permalink)
OrionKing ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2005
Mensajes: 141
numero de filas de una query en java

Hola todos tengo un preguntilla. ¿Alguien sabe como se devuleve el numero de filas que tiene una query en java?
He leído que hay que hacer algo tal que:

if (rs.last()){
numOfRows = rs.getRow();
} else {
numOfRows = 0;
}
System.out.println("Numero de actos: " + numOfRows);
rs.first();

Pero es un poco guarro, ademas luego el cursor me devuelve un registro menos pq leo en un while y tendria que montar un do while o en un for...

He mirado el metodo
rs.getFetchSize() pero me devuelve un 0.

Gracias por todo.
OrionKing está desconectado   Responder Citando
Antiguo 22-nov-2005, 09:01   #2 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.576
Como en casi cualquier lenguaje, haces un "select count(1)...", que no es 100% seguro, o los cuentas "a mano" recorriendo el resultSet.

Algunos drivers te pueden devolver cuantos registros directamente, por que lo que hacen es contarlo ellos por debajo, pero no es portable entre todas las BDD asi que tendrias que mirar el driver que uses.
GreenEyed está desconectado   Responder Citando
Antiguo 23-nov-2005, 09:11   #3 (permalink)
OrionKing ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2005
Mensajes: 141
Gracias, pero yo queria ahorrarme una consulta en sql, y saber cuantros reqistros tiene la matriz.
OrionKing está desconectado   Responder Citando
Antiguo 23-nov-2005, 12:58   #4 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.576
Si los vas a procesar de todas formas, entonces pasa los datos que te interese a una lista y despues cuentas cuantos hay.

Si no los vas a procesar despues, entonces haz un select count.

Como te he dicho, tambien puedes intentar recuperarlo directamente del resultSet, pero depende del driver y de la base de datos, asi que no te puedes fiar mucho de eso.

Es lo que hay
GreenEyed está desconectado   Responder Citando
Antiguo 25-nov-2005, 02:24   #5 (permalink)
OrionKing ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2005
Mensajes: 141
Muchas gracias.

es una pena que no exista un funcion tipo mysql_num_rows($query) de PHP

HAsta pronto.

OrionKing está desconectado   Responder Citando
Antiguo 25-nov-2005, 03:46   #6 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.576
Este... si no me equivoco, esa funcion de PHP solo es para MySQL, asi que no puedes comparar eso con JDBC que sirve para cualquier BDD . Seguramente con el driver de MySQL lo puedas hacer, pero no como regla general, pero es por cuestion de las diferentes bases de datos, no de Java.

A la hora de comparar cosas, tienen que ser equivalentes
GreenEyed está desconectado   Responder Citando
Antiguo 25-nov-2005, 08:41   #7 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.995
Cita:
Iniciado por GreenEyed
A la hora de comparar cosas, tienen que ser equivalentes
jejejejje, bien dicho

have funnnnn guys!!
__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas
stock está desconectado   Responder Citando
Antiguo 12-abr-2006, 02:49   #8 (permalink)
hamstelfo ha deshabilitado el karma
 
Fecha de Ingreso: abril-2006
Mensajes: 1
Esta es la clave

Por si le sirve a alguien, a mi tp me iba el getFetchSize, pero aki esta la solucion

r=st.executeQuery(sql);
r.last();
int numRows = r.getRow();
r.beforeFirst(); // esto te lo deja como al principio
out.print(numRows);
hamstelfo está desconectado   Responder Citando
Antiguo 28-jun-2006, 14:49   #9 (permalink)
chuidiang tiene algunos puntos positivos de karma
 
Avatar de chuidiang
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Hola:

De todas formas habría que ver qué hace mysql_num_rows($query) por dentro. Igual hace la consulta similar a "select count" de la que se hablaba. Ten en cuenta que tanto en java como en php al final se conecta y se envía una "consulta" a la base de datos y esta responde. Quizás en realidad con php no te ahorres la consulta, simplemente no ves que se hace. Es fácil reemplazar un "select campos from tabla where .." por un "select count from tabla where..." internamente.

Se bueno.
chuidiang está desconectado   Responder Citando
Antiguo 29-jun-2006, 09:58   #10 (permalink)
locoporelrojo sólo puede mejorar
 
Avatar de locoporelrojo
 
Fecha de Ingreso: abril-2006
Ubicación: Cali - Colombia
Mensajes: 98
Enviar un mensaje por MSN a locoporelrojo
Cita:
Iniciado por OrionKing
Hola todos tengo un preguntilla. ¿Alguien sabe como se devuleve el numero de filas que tiene una query en java?
He leído que hay que hacer algo tal que:

if (rs.last()){
numOfRows = rs.getRow();
} else {
numOfRows = 0;
}
System.out.println("Numero de actos: " + numOfRows);
rs.first();

Pero es un poco guarro, ademas luego el cursor me devuelve un registro menos pq leo en un while y tendria que montar un do while o en un for...

He mirado el metodo
rs.getFetchSize() pero me devuelve un 0.

Gracias por todo.
Creo q podes trabajarlo de la sgte forma:

int rows = 0;
rs = st.executeQuery(sql);
while (rs.next())
rows++;
System.out.print("Nro de filas: "+row);
rs.first();
locoporelrojo está desconectado   Responder Citando
Antiguo 16-ago-2006, 09:45   #11 (permalink)
Malebolgia ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2004
Mensajes: 2
Cita:
Iniciado por hamstelfo Ver Mensaje
Por si le sirve a alguien, a mi tp me iba el getFetchSize, pero aki esta la solucion

r=st.executeQuery(sql);
r.last();
int numRows = r.getRow();
r.beforeFirst(); // esto te lo deja como al principio
out.print(numRows);
Recordar declarar el Statement de la siguiente forma:
Código:
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                        ResultSet.CONCUR_READ_ONLY ) ;

Saludos
Malebolgia
Malebolgia está desconectado   Responder Citando
Antiguo 22-sep-2007, 09:51   #12 (permalink)
alejandro2007_1 ha deshabilitado el karma
 
Avatar de alejandro2007_1
 
Fecha de Ingreso: junio-2007
Mensajes: 1
Re: numero de filas de una query en java

Hola q tal, respecto a la ultima respuesta
/////////////////////////////////Publicado por Malebolgia//////////////////////////////////////
Recordar declarar el Statement de la siguiente forma:

Código:
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSI TIVE,
ResultSet.CONCUR_READ_ONLY ) ;

//////////////////////////////////////////////////////////////////////////////////////////////////////
Obtengo el siguiente error

10:49:10,828 INFO [STDOUT] No se pudo realizar el listado de los Mensajes --> org.postgresql.util.PSQLException: Operation requires a scrollable ResultSet, but this ResultSet is FORWARD_ONLY.

Alguien me podria ayudar

Gracias
alejandro2007_1 está desconectado   Responder Citando
Antiguo 24-sep-2007, 02:34   #13 (permalink)
elAntonie no se puede cailificar en este momento
 
Avatar de elAntonie
 
Fecha de Ingreso: febrero-2007
Mensajes: 278
Re: numero de filas de una query en java

No puedes usar el metodo first con un resultset unidireccional.

Te da el error porque has creado un resultset tipo forward_only (la opcion por defecto) es decir vas del primer registro al lultimo y no puedes volver atras.

Por eso el first() te da error.

Tienes la solucion en el api de resultset.

Saludos.
elAntonie está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 12:11.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93