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

¿Como preguntarle a MySQL si existe una BD o una tabla?

Estas en el tema de ¿Como preguntarle a MySQL si existe una BD o una tabla? en el foro de Java en Foros del Web. Hola He estao buscando por el foro mi pregunta, pero lo que he encontrado ha sido hacer la sentencia desde MySQL por ejemplo Código: CREATE ...
  #1 (permalink)  
Antiguo 31/03/2008, 09:55
 
Fecha de Ingreso: enero-2008
Mensajes: 42
Antigüedad: 16 años, 3 meses
Puntos: 2
¿Como preguntarle a MySQL si existe una BD o una tabla?

Hola

He estao buscando por el foro mi pregunta, pero lo que he encontrado ha sido hacer la sentencia desde MySQL por ejemplo

Código:
CREATE DATABASE IF NOT EXISTS <nombre_bd>
o

Código:
CREATE TABLE IF NOT EXISTS<nombre_tabla>
Pero lo que quiero saber es si existen una tabla y una base de datos o no, porque tengo un código en java y en función de si existe la BD y la tabla tengo que hacer una cosa u otra.

¿Alguien podría resolver mi duda?

Gracias.

Saludos.
  #2 (permalink)  
Antiguo 31/03/2008, 11:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ¿Como preguntarle a MySQL si existe una BD o una tabla?

Creo que esto te podria servir:
http://members.aol.com/kgb1001001/Ar...C_Metadata.htm

Suponiendo que lo quieras hacer desde Java, si es sobre la sintaxis SQL para mySQL, ni idea .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 31/03/2008, 15:08
 
Fecha de Ingreso: enero-2008
Mensajes: 42
Antigüedad: 16 años, 3 meses
Puntos: 2
Re: ¿Como preguntarle a MySQL si existe una BD o una tabla?

Hola

Si, lo quiero hacer desde java. He estado echando un vistazo al link que has puesto y parece que solo viene la forma de saber si existe la tabla.

El método parece que es getTables y lo guarda en un ResultSet pero no se como sacar de ahí lo que quiero (saber si existe la tabla o no) lo he hecho con estas dos líneas pero por hacer algo :$
Código:
ResultSet rs1=metadata.getTables(" "," ", "ontologia", tabla);
boolean b=rs1.getBoolean(1);
He elaborado el siguiente código guiandome por lo que he leido del link, pero me da un fallo que no se porque es.

Código:
public static void main(String[] args){
          try{

		Class.forName("org.gjt.mm.mysql.Driver").newInstance();
		String url = "jdbc:mysql://localhost/almacenamiento";
		String DB_USER =   "user";                         
		String DB_PASSWD = "pass";                        
					 
		Connection c1= DriverManager.getConnection(url, DB_USER,  DB_PASSWD);

	 	DatabaseMetaData metadata = null; 				
		metadata=c1.getMetaData();

		String tabla[]={"TABLE"};	
		
                //ontologia es la tabla a buscar en la base de datos almacenamiento
		ResultSet rs1=metadata.getTables("","", "ontologia", tabla); 
		boolean b=rs1.getBoolean(1);
		c1.close();
		System.out.print(b);
             }    	
	     catch (Exception e){	
			e.printStackTrace();
	     }
}
El fallo es el siguiente:
Cita:
java.sql.SQLException: Before start of result set
Gracias.

Saludos!
  #4 (permalink)  
Antiguo 01/04/2008, 00:13
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: ¿Como preguntarle a MySQL si existe una BD o una tabla?

No has hecho un next() del resultset, rs1 en tu caso, antes de llamar a getBoolean(). Es necesario hacerlo al menos una vez para que el "cursor" interno se posicione al inicio de la lista de resultados.
De todas formas, no hace falta que hagas un getBoolean(1), ¿no? Si rs1.next() devuelve true es que tienes al menos un resultado y eso significa que la tabla existe.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 01/04/2008, 01:43
 
Fecha de Ingreso: enero-2008
Mensajes: 42
Antigüedad: 16 años, 3 meses
Puntos: 2
Re: ¿Como preguntarle a MySQL si existe una BD o una tabla?

Hola

He implementado el siguiente código para saber si existe una tabla:

Código:
public boolean existeTabla(){
	boolean b=false;
	try{
	    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
	    String url = "jdbc:mysql://localhost/almacenamiento";
	    String DB_USER =   "user";          
	    String DB_PASSWD = "pass";
							 
	    Connection c1= DriverManager.getConnection(url, DB_USER, DB_PASSWD);
			    
	    Statement stat = c1.createStatement();
	    ResultSet rs1=stat.executeQuery("select * from ontologia");
			
	    if(rs1.next()){
		b=true;
	    }
	        return(b);
	    }    	
	     catch (Exception e){	
		return b;
	    }
}
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




La zona horaria es GMT -6. Ahora son las 07:30.