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

numero de filas de una query en java

Estas en el tema de numero de filas de una query en java en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/11/2005, 06:17
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 18 años, 8 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 22/11/2005, 10:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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.
  #3 (permalink)  
Antiguo 23/11/2005, 10:11
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 18 años, 8 meses
Puntos: 0
Gracias, pero yo queria ahorrarme una consulta en sql, y saber cuantros reqistros tiene la matriz.
  #4 (permalink)  
Antiguo 23/11/2005, 13:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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
  #5 (permalink)  
Antiguo 25/11/2005, 03:24
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 18 años, 8 meses
Puntos: 0
Muchas gracias.

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

HAsta pronto.

  #6 (permalink)  
Antiguo 25/11/2005, 04:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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
  #7 (permalink)  
Antiguo 25/11/2005, 09:41
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Cita:
Iniciado por GreenEyed
A la hora de comparar cosas, tienen que ser equivalentes
jejejejje, bien dicho

have funnnnn guys!!
  #8 (permalink)  
Antiguo 12/04/2006, 02:49
 
Fecha de Ingreso: abril-2006
Mensajes: 1
Antigüedad: 18 años
Puntos: 0
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);
  #9 (permalink)  
Antiguo 28/06/2006, 14:49
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
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.
__________________
Apuntes Java
Wiki de Programación
  #10 (permalink)  
Antiguo 29/06/2006, 09:58
Avatar de locoporelrojo  
Fecha de Ingreso: abril-2006
Ubicación: Cali - Colombia
Mensajes: 98
Antigüedad: 18 años, 1 mes
Puntos: 2
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();
  #11 (permalink)  
Antiguo 16/08/2006, 09:45
 
Fecha de Ingreso: diciembre-2004
Mensajes: 2
Antigüedad: 19 años, 5 meses
Puntos: 0
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
  #12 (permalink)  
Antiguo 22/09/2007, 09:51
Avatar de alejandro2007_1  
Fecha de Ingreso: junio-2007
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
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
  #13 (permalink)  
Antiguo 24/09/2007, 02:34
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
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.
  #14 (permalink)  
Antiguo 01/09/2010, 14:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: numero de filas de una query en java

Gente tengo una solucion para este tema y es :

// Primera Parte
int cantColumnas = 0; // es donde va a quedar el dato de la cantidad de Columnas.
String query = "Select * from tabla";

//Segunda Parte
Class.forName("net.sourceforge.jtds.jdbc.Driver"). newInstance();
cn = DriverManager.getConnection(
"jdbc:jtds:sqlserver://IPSERVIDOR:PUERTO/BASEDATOS", "USUARIO", "PASSWORD");

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSI TIVE, ResultSet.CONCUR_READ_ONLY);

resultSet = stmt.executeQuery(query);

//Tercera parte
cantColumnas = resultSet.getMetaData().getColumnCount();



Ahora explico un poco:

La primera parte son las variables.
La segunda parte es la conexión y donde ejecutamos la query.
Y la tercera parte que es la que hace la pega es al "resulSet" le sacamos los nombres de las columnas con el getMetaData() y con el getColumnCount() las contamos. Así de fácil y bonito.

Espero que les sirva como a mi. Que me salvo la tarde en la pega.


Saludos.
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 10:08.