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

Java-sql

Estas en el tema de Java-sql en el foro de Java en Foros del Web. Buenas, estoy creandome una pequeña aplicacion, a modo de practica, que me creara BBDD en sql desde la consola de java. El problema que tengo, ...
  #1 (permalink)  
Antiguo 25/03/2009, 19:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
Java-sql

Buenas, estoy creandome una pequeña aplicacion, a modo de practica, que me creara BBDD en sql desde la consola de java.
El problema que tengo, esque no encuentro una funcion con la que poder contar el numero de columnas que tiene una tabla que anteriormente he creado... Sabeis si hay algo?? he estado provando con el getRow(), haciendo una
query: executeQuery("SELECT COUNT(*) AS rowcount FROM "+nombreTabla); pero no encuentro la manera...
Intento que la aplicacion, segun el numero de columnas, te pida que metas tantos valores como columnas tiene, teniendo en cuenta el tipo y tal...
No se si me he explicado bien, de todas maneras gracias de antemano!
  #2 (permalink)  
Antiguo 25/03/2009, 23:10
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Java-sql

Hola:

¿Quieres contar el número de columnas o de filas?. Dices columnas, pero pones getRow() y select count, que son filas.

Si son columnas, el método getMetaData() de Connection te devuelve un DataBaseMetaData a partir del cual tienes métodos para interrogar a la base de datos y saber qué tablas tiene, cuantas columnas cada tabla, de qué tipos, etc.

Si son filas, el select count(*) debería funcionarte, pero lo que tienes que hacer es leer el resultset que devuelve esa consulta de la forma habitual. Dicho ResultSet tendrá un solo registro de consulta con una sola columna y el único valor presente es el número de filas.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 26/03/2009, 18:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Java-sql

Gracias por la respuesta, exactamente quiero saber el numero de columnas, encontre un codigo:
SELECT COUNT(*) FROM(SELECT*FROM COLUMNS WHERE TABLE_NAME='nombreTabla')
pero tampoco consigo que me funcione, seguire buscando!
  #4 (permalink)  
Antiguo 26/03/2009, 22:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Java-sql

Usa el getMetaData() que te comenté.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 27/03/2009, 04:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Java-sql

Efectivamente el getMetaData() me proporciona un monton de metodos informativos de tablas, funciona a la perfececcion, en cualquier caso, me han proporcionado mas info desde el curso que estoy haciendo: que a diferncia del getMetaData().getColumns(), codigo que pasteo no te pide los 4 Strings referentes a la informacion, unicamente el nombre de la tabla (dependiendo el nombre del esquema que tengas puesto en la conexion...) Evidentemente para solucion efectiva y profesional el getMetaData() pero para cosas cutres, como lo que estoy provando yo, propongo este codigo:
Cita:
public void comprobarColumnas() throws SQLException{
SGBD accesoBD= SGBD.getInstance(); //tendreis que tener una classe SGBD con una conexion.
Statement stmt=accesoBD.getConn().createStatement();

int num=stmt.executeUpdate("DESCRIBE producto");
ResultSet rs=stmt.executeQuery("DESCRIBE producto");

System.out.println("Numero de Columnas "+num);

while(rs.next()){
System.out.println("Columna: "+rs.getRow()+" "+ rs.getString(1));
}
}
encuentro curiosa la respuesta del "DESCRIBE" , dentro del executeUpdate devuelve el entero con el numero de columnas que hay, y en el executeQuery la informacion de la columna(en este caso el nombre, si pones 2 te dara el tipo, y asi sucesivamente...)

Gracias por la ayuda, y espero que este codigo que me han pasado tambien os pueda servir algun dia!
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 14:48.