2010-08-09 11 views
6

Creamos una aplicación java que utiliza la base de datos JavaDB en Netbeans IDE. Queremos que el programa verifique cada vez que se inicia si las tablas de la base de datos ya han sido creadas y, de lo contrario, créelas. ¿Cómo hacemos eso? Gracias JavaDB - Comprobando si existe una base de datos

+0

posible duplicado de [¿Cómo comprobar si existe una base de datos en Hsqldb/Derby?] (Http://stackoverflow.com/questions/3801773/how-to-check-if-a-database-exists-in-hsqldb -derby) – Raedwald

+0

La respuesta de garlicman es correcta, solo agrego que la búsqueda de la tabla debe hacerse en mayúsculas porque a pesar de haber creado tu tabla en minúsculas, los metadatos están en mayúsculas –

Respuesta

6

que utilizo:

DatabaseMetaData metas; 
ResultSet tables; 
Statement stat; 

m_connexion = DriverManager.getConnection("jdbc:derby:mybase;create=true"); 
metas = m_connexion.getMetaData(); 
stat = m_connexion.createStatement(); 
tables = metas.getTables(m_connexion.getCatalog(), null, "MYTABLE", null); 
if (!tables.next()) 
    stat.execute(
    "CREATE TABLE APP.MYTABLE (" // etc. 

... y es un trabajo para mí.

0

La prueba de Istao para la existencia de una tabla no funcionó para mí con Derby. La tabla nunca se encontró aunque se haya creado previamente. Lo que falta es especificar el TABLE_SCHEM como "APP", luego establecer el tipo de tabla para incluir "TABLE". Tal vez usar null funcionó en versiones anteriores, pero al usar Derby 10.12 no se encuentra una tabla creada previamente con estos parámetros establecidos en nulo.

Connection conn = DriverManager.getConnection(DB_PROTO + DB_NAME + ";create=true"); 
DatabaseMetaData metas = conn.getMetaData(); 
ResultSet tables = metas.getTables(conn.getCatalog(), "APP", TABLE_NODES, new String[] {"TABLE"}); 
if (!tables.next()) { 
    Statement stat = conn.createStatement(); 
    stat.execute("create table " + ... 

Espero que esto ayude a alguien más.

Cuestiones relacionadas