2009-02-25 33 views

Respuesta

10

No conozco ninguno, excepto algunos pocos, a diferencia de MySQL donde tenemos esa facilidad de IF EXIST.

Lo que hace es intentar conectarse a la base de datos, si no es probable que no esté allí. Y después de una conexión exitosa, puede hacer una simple selección, como SELECT count (*) FROM TABLE_NAME, para saber si la tabla existe o no. Usted estaría dependiendo de la excepción. Incluso en un ejemplo oficial de Sun, he visto un trabajo similar.

En Oracle tenemos tablas de diccionario para conocer los objetos de la base de datos. Dudo que tengamos algo así en Derby.

[Editado]

Bueno, he encontrado que hay una manera de saber si la tabla existe. Pruebe, SELECCIONE tablename FROM SYSTABLES. Es para verificar la existencia de una tabla, para verificar la base de datos es posible que deba hacer algo similar, como expliqué anteriormente.

8

Adeel, también se puede utilizar Connection.getMetaData para devolver un objeto DatabaseMetaData, a continuación, utilizar el getTables, una vez que tenga la conexión a la base de datos, por supuesto. Esto tiene la ventaja de trabajar para cualquier base de datos con un controlador JDBC que valga la pena.

Para comprobar si existe la base de datos, si está utilizando Derby de manera integrada o si el servidor está en la misma máquina, puede verificar si existe la carpeta para la base de datos. Aunque es un poco kludgy Haría lo que sugiere Adeel e intentaré conectarme, atrapando la excepción si no está allí.

2

Sugeriría obtener el objeto DatabaseMetaData, y luego usar el método getTables (null, null, null, new String [] {"TABLE"}), que devuelve un ResultSet. Utilice el método next() del ResultSet, que devuelve un valor booleano, para comprobar si existen tablas. Si es cierto, tienes tablas en existencia. Falso, y la base de datos está vacía.

Cuestiones relacionadas