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

java-mysql .. ayuda con select count

Estas en el tema de java-mysql .. ayuda con select count en el foro de Java en Foros del Web. hola: me gustaria saber como podria consultarle a la base de datos la cantidad de campos de una tabla. he intentado la siguiente sintaxis: (en ...
  #1 (permalink)  
Antiguo 06/08/2005, 17:10
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 21
Antigüedad: 20 años, 3 meses
Puntos: 0
java-mysql .. ayuda con select count

hola:
me gustaria saber como podria consultarle a la base de datos la cantidad de campos de una tabla.

he intentado la siguiente sintaxis: (en la consola de mysql)

SELECT COUNT(*) FROM datos;

y este me arroga la cantidad de datos dentro de la tabla, pero mi problema es cuando lo llevo a java.... no he conseguido nada mas que una gran cantidad de errores.

ResultSet res = stmt.executeQuery("SELECT count(*) FROM datos");
System.out.println("numero de datos: "+res.getInt(2));


res.getInt(2)); <--- en realidad no se como seria esta parte, pero buscando por internet me he topado con muchas de estas forma de captar el numero, pero ninguna me funciona...


ojala que alguien pueda ayudarme y postear el pedazo de codigo que corresponde se lo agradeceria mucho.

gracias de antemano.

saludos!
  #2 (permalink)  
Antiguo 06/08/2005, 18:36
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Hola!! deggial no se que error te este lanzando, pero imagino que es este

java.sql.SQLException: Before start of result set

porque eso?? pues ese error suele pasar cuando intentas recuperar un registro de la tabla devuelta por el select que NO existe o que esta fuera del indice, es como cuando intentas hacer en un arreglo algo asi numeros[-1] = 0; por supuesto que eso esta mal, lo mismo pasa cuando hacemos un rs.getInt(x); antes de tomar los valores debemos poner el indice en la posicion "0", como pues nadamas asi: rs.next(); y ahora si puedes accesar a los registro.....

OK una cosa mas, segun veo tu codigo, quiza te este mandando esta exception

java.sql.SQLException: Column Index out of range ( 2 > 1).

por que?? pues sencillamente por que estas llamando a una columna que no existe, si y es que en tu codigo estas llamando a la columna numero 2 cuando en tu select solo estas pidiendo UNA, lo correcto es hacerlo asi rs.getInt(1);.

bueno, aqui te pongo un ejemplo:

Código PHP:
<%@page import="java.sql.*"%>

<%
try{
    
DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
    
Connection cn DriverManager.getConnection("jdbc:mysql://localhost/mybase","user","password");
    
Statement st cn.createStatement();
    
ResultSet rs st.executeQuery("SELECT COUNT(*) FROM algunaTabla");
    
rs.next();
%>
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
title>Consulta</title>
</
head>

<
body>

El total de registros en la tabla es: <b><%=rs.getInt(1)%></b>
<%}catch(
Exception e){
    
out.println(e);
}%>

</
table>
</
form>
</
body>
</
html
  #3 (permalink)  
Antiguo 06/08/2005, 18:38
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Oppsssss te puse un ejemplo para JSP, bueno, pero es la misma cosa para JAVA, alfin y al cabo JSP viene siendo JAVA
  #4 (permalink)  
Antiguo 06/08/2005, 18:47
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 deggial-x
....
res.getInt(2)); <--- en realidad no se como seria esta parte, pero buscando por internet me....
solo para aclararte esa parte

ahi puedes meter el nombre del campo tambien, por ejemplo, si en tienes tu query asi

"SELECT Id,Nombre,Apellido,Edad FROM clientes"

puedes tomar las columnas de dos formas,

1.- por los indices
2.- por nombre de las columnas

ej: rs.getString("Nombre"); es lo mismo que rs.getString(2);
rs.getInt("Id"); es lo mismo que rs.getInt(1);
rs.getString("Apellido"); es lo mismo que rs.getString(3);

para hacer un conteo de registros puedes especificar en tu query un nombre para la columna que te va a regresar y accesarla por nombre tambien, algo asi

"SELECT COUNT(*) AS Total FROM myTabla"

asi es como se nombrab o renombran las columnas, entonces ahora si puedes tomar la columna por nombre....

eso de usar indices o nombres depende del programador, personlamente ami me gusta usar nombres para que si en un futuro necesito modificar el codigo o actualizar algo, me sea mas facil, pues imaginate con solo numeros no voy a saber ni que onda cuando tenemos tablas de 100 o 200 campos bueno espero hallas entendido

have funn
  #5 (permalink)  
Antiguo 07/08/2005, 13:31
(Desactivado)
 
Fecha de Ingreso: enero-2004
Mensajes: 21
Antigüedad: 20 años, 3 meses
Puntos: 0
muchas gracias por tu ayuda..

al fin puedo continuar, solucionaste mis dudas y ademas las que se aproximaban
saludos!
  #6 (permalink)  
Antiguo 10/08/2005, 01:46
 
Fecha de Ingreso: agosto-2005
Mensajes: 2
Antigüedad: 18 años, 8 meses
Puntos: 0
select ncols from systables
where tabname = "nombre de la tabla"


Notas: es posible que el ncols en mysql u otros no se llame as¡,
En este caso habria que lanzar por sql lo siguiente
select * from systables, para ver las columnas como estan identificadas.
La relacion del systables: suele representar las siguientes columnas:
tabname, ...., dirpath, ncols, rowsize, nindexes, nrows, created, .....

Donde la columna tabname te dira como se llama la tabla.
dirpath el nombre fisico en la base de datos,
ncols la columna dentro de la table systables que indica el numero de columnas de la tabla.
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 (incluyéndote)




La zona horaria es GMT -6. Ahora son las 04:43.