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

imprimir resultado de un ResultSet

Estas en el tema de imprimir resultado de un ResultSet en el foro de Java en Foros del Web. hola a todos, tengo este problema y ojala alguien de estedes me pueda ayudar. trabajo con Netbeans y base de datos y quiero obtener el ...
  #1 (permalink)  
Antiguo 09/04/2007, 12:08
 
Fecha de Ingreso: junio-2006
Mensajes: 25
Antigüedad: 17 años, 10 meses
Puntos: 0
imprimir resultado de un ResultSet

hola a todos, tengo este problema y ojala alguien de estedes me pueda ayudar.

trabajo con Netbeans y base de datos y quiero obtener el numero de renglones en una tabla, para ello uso el siguiente codigo

Código HTML:
ResultSet rs=st.executeQuery("select count(*) from usuarios");
System.out.println("numero de renglones: "+rs);
el resultado que obtengo es el siguiente:

Código HTML:
org.postgresql.jdbc3.Jdbc3ResultSet@1855af5
para que me arroje el numero lo estoy haciendo con un while, asi como lo muestro
Código HTML:
 while (rs.next())
            {
             cont++;
            }
            
            System.out.println(cont);
contador me da el numero adecuado, pero quiero saber si hay manera de obtener el resultado de manera directa, o es necesario hacer el while???

de antemano muchas gracias a todos.
  #2 (permalink)  
Antiguo 09/04/2007, 13:20
Avatar de Nighter  
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: imprimir resultado de un ResultSet

Antes que nada dejame decirte o mejor dicho felicitarte, porque si no se puede por a entonces por b cierto? pero bueno entrando en materia, lo que te arroja el System.out.println(("numero de renglones: "+rs) es correcto, es toda la trayectoria de conexion y la informacion, lo unico que tienes que hacer es utilizar alguno de los metodos para obtener "algo", me explico, si lo que vas a recibir es un entero usa getInt(), y asi, pero para empezar te recomiendo que uses el metodo getString(), para imprimir lo que necesitas, es decir, tu codigo quedaria asi:

Código PHP:
ResultSet rs=st.executeQuery("select count(*) from usuarios");
System.out.println("numero de renglones: "+rs.getString(1)); 
no solo te doy la solucion sino que le entiendas un poco mas, getString(1) convierte a string lo que el dato que este en el renglon 1, por ejemplo cuando
haces una consulta que te regresa varias columnas pues usas getString(1), getString(2)... etc

espero que esto te ayude

EXITO!!!
  #3 (permalink)  
Antiguo 09/04/2007, 14:01
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: imprimir resultado de un ResultSet

Hola
Bueno, suponiendo que trabajes con mysql , puedes usar mysql_num_rows() que te trae el total de registros, espero te sirva
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #4 (permalink)  
Antiguo 09/04/2007, 17:14
 
Fecha de Ingreso: junio-2006
Mensajes: 25
Antigüedad: 17 años, 10 meses
Puntos: 0
Nighter y El Patrón...

que tal chavos, de antemano muchas gracias por la ayuda...

El Patrón, estoy usando postgres, disculpa se paso mencionar eso.

Nighter, tome tu codigo y lo pege tal cual, pero no jalo, me manda un error:

Código HTML:
error en la consulta
ResultSet not positioned properly, perhaps you need to call next.
crees que me haga falta algo mas???

bueno por su ayuda muchas gracias!!!
  #5 (permalink)  
Antiguo 09/04/2007, 18:59
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: imprimir resultado de un ResultSet

Cita:
Hola
Bueno, suponiendo que trabajes con mysql , puedes usar mysql_num_rows() que te trae el total de registros, espero te sirva
mysql_num_rows es una funcion exclusiva de PHP... osea que no sirve para querys de ningun DBMS.

Cita:
quiero saber si hay manera de obtener el resultado de manera directa, o es necesario hacer el while???
Si es necesario hacer el while...
El error te da por que estas impriendo un resultset.. como te lo dijeron antes..
Te da ese error por que el puntero que recorre los campos de la BD.. inicialmente apunta a nullo, y por eso necesitas el ciclo, para que se vaya moviendo.
Y dentro del while.... usar
Código HTML:
 rs.getInt(0);
Un saludo..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.

Última edición por B**; 09/04/2007 a las 19:08
  #6 (permalink)  
Antiguo 10/04/2007, 00:20
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: imprimir resultado de un ResultSet

HOla

en efecto es de php con mysql mi ejemplo

bueno, con la version de la JVM 1.4.2 el objeto resultset tiene me parece algo de last() , con eso tal vez se podria traer el ultimo y asi saber el total. es decir rs.last() no recuerdo bien.
Otra solución seria hacer una consulta con la funcion count() para saber el número de registros de la tabla.
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #7 (permalink)  
Antiguo 10/04/2007, 06:08
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: imprimir resultado de un ResultSet

Wenas.

Hay otra opcion (entre otras muchas)

String consulta = "select * from tabla";
ps = con.prepareStatement(consulta,ResultSet.TYPE_SCROL L_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = ps.executeQuery();
rs.last();
int nFilas = rs.getRow();
rs.beforeFirst();
while (rs.next())
.........

en nFilas tendras el numero de filas devuelto por la consulta. Debes usar el tipo resultset TYPE_SCROLL_INSENSITIVE, el cual quiere decir, en cristiano, que te puedes mover libremente por el, en cualquier direccion, sino, por defecto, sera unidireccional y siempre hacia delante (por lo que beforefisrst te fallaria)

Espero que te sirva. Un saludo.
  #8 (permalink)  
Antiguo 10/04/2007, 06:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Nighter y El Patrón...

Cita:
Iniciado por astryan Ver Mensaje
que tal chavos, de antemano muchas gracias por la ayuda...

El Patrón, estoy usando postgres, disculpa se paso mencionar eso.

Nighter, tome tu codigo y lo pege tal cual, pero no jalo, me manda un error:

Código HTML:
error en la consulta
ResultSet not positioned properly, perhaps you need to call next.
crees que me haga falta algo mas???

bueno por su ayuda muchas gracias!!!
Como dice el mensaje de error, te hace falta llamar a next() de resultSet antes de hacerle un getInt(1);

S!
  #9 (permalink)  
Antiguo 10/04/2007, 10:16
 
Fecha de Ingreso: noviembre-2005
Ubicación: Venezuela
Mensajes: 56
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: imprimir resultado de un ResultSet

Que tal

podrias hacer un

rs.last() //Para ir directamente al ultimo registro del resultset
rs.getRow() //Para obtener el numero de la fila en la que te encuentras actualmente.

de esta manera te ahorras el while
  #10 (permalink)  
Antiguo 10/04/2007, 10:43
Avatar de Nighter  
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: imprimir resultado de un ResultSet

Perdon, si me falto algo:

Código PHP:
ResultSet rs=st.executeQuery("select count(*) from usuarios"); 
rs.next();
System.out.println("numero de renglones: "+rs.getString(1)); 
Perdon por contradecir a B** pero no es necesario hacer ningun bucle con que le agreges el rs.next() al codigo que te mande funciona, se que hay varias maneras pero, en lo personal esta es la mas facil, ademas el conteo de renglones empieza en 1, bueno, solo puedo hablar de postgresql y ms sql server que son lo que he manejado

EXITO!!! (espero :)

Última edición por Nighter; 10/04/2007 a las 10:48
  #11 (permalink)  
Antiguo 10/04/2007, 16:17
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: imprimir resultado de un ResultSet

Cita:
Iniciado por Nighter Ver Mensaje
Perdon, si me falto algo:

Código PHP:
ResultSet rs=st.executeQuery("select count(*) from usuarios"); 
rs.next();
System.out.println("numero de renglones: "+rs.getString(1)); 
Perdon por contradecir a B** pero no es necesario hacer ningun bucle con que le agreges el rs.next() al codigo que te mande funciona, se que hay varias maneras pero, en lo personal esta es la mas facil, ademas el conteo de renglones empieza en 1, bueno, solo puedo hablar de postgresql y ms sql server que son lo que he manejado

EXITO!!! (espero :)
Claro.. funcionaria si solo existe un registro que traer de la DB... el while es para traer varios registros...y si, en este ejemplo que solo va a obtener uno , no es necesario hacer el ciclo.

Por otro lado: usa rs.getString, solo si vas a obtener un campo de tipo String.. pero hay tambien, getInt,etc.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.

Última edición por B**; 10/04/2007 a las 16:25
  #12 (permalink)  
Antiguo 10/04/2007, 17:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: imprimir resultado de un ResultSet

Como en este caso el select hace un "count(*)", seguro que habra una fila y sólo una. Aunque si que comparto que mejor hacer directamente un getInt... o del tipo apropiado (si el numero de filas se puede salir de rango).

S!
  #13 (permalink)  
Antiguo 11/04/2007, 00:57
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: imprimir resultado de un ResultSet

Lo menos eficiente es un select count(*), eso esta bien si lo unico que quieres es saber el numero de registros. Si ademas quisieras imprimir las filas, por ejemplo, tendrias que volver a ejecutar la consulta. Seria mas eficiente, si SOLO te interesase eso.

La opcion que yo digo, ademas de esto, te permite tener el resultset disponible. Solo hay que decirle que es del tipo SCROLL_INSENSITIVE. Todo ello ejecutando una sola vez la consulta. Para tener el resultset disponble, solo hace falta moverlo al 'registro' inmediatamente anterior al primero (rs.beforefirst()) y despues ejecutar tantos rs.next() como necesites(while rs.next()).

Otra opcion seria 'volcar' el resultset en un vector o en un arraylist, y con un simple size() sabras el tamaño, amen de tener las filas disponibles para us uso, pero eso es mas elaborado (un poco).

Por otra parte coincido con vosotros, en usar en getInt() en vez de un getString().
Un saludo.
  #14 (permalink)  
Antiguo 11/04/2007, 10:12
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: imprimir resultado de un ResultSet

Si se trata de consultas eficientes tambien se puede usar el preparedStatement
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #15 (permalink)  
Antiguo 16/04/2007, 10:15
 
Fecha de Ingreso: junio-2006
Mensajes: 25
Antigüedad: 17 años, 10 meses
Puntos: 0
gracias!!!

chavos, gracias a todos!!!

su ayuda me fue muy util y estoy seguro que esto le servira a alguien mas en un fututo.

por su ayuda... muchas gracias.
  #16 (permalink)  
Antiguo 17/01/2008, 18:23
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 0
De acuerdo Re: Nighter y El Patrón...

Cita:
Iniciado por astryan Ver Mensaje
que tal chavos, de antemano muchas gracias por la ayuda...

El Patrón, estoy usando postgres, disculpa se paso mencionar eso.

Nighter, tome tu codigo y lo pege tal cual, pero no jalo, me manda un error:

Código HTML:
error en la consulta
ResultSet not positioned properly, perhaps you need to call next.
crees que me haga falta algo mas???

bueno por su ayuda muchas gracias!!!
"perhaps you need to call next" este error tambien lo entrega cuando intentas leer un resultSet que no recibio datos de la base de datos, puedes revisar esto:
tu tabla que lees tiene datos?
si ejecutas la sentencia sql, esta muestra datos?
  #17 (permalink)  
Antiguo 24/11/2010, 01:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: imprimir resultado de un ResultSet

señores , tengo un problema necesito obtener el segundo registro de un ResulSet
la consulta es : select rut from trabajador ;
me arroja lo siguiente al imprimir
213231-11
121151-12
151554-4
necesito el segundo dato por favor ayuda !
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 10:59.