2010-08-09 9 views
6

Wir haben eine Java-Anwendung erstellt, die die JavaDB-Datenbank in Netbeans IDE verwendet. Wir möchten, dass das Programm bei jedem Start überprüft, ob die Tabellen der Datenbank bereits erstellt wurden, und sie andernfalls erstellen. Wie machen wir das? thanxJavaDB - Überprüfung, ob eine Datenbank existiert

+0

möglich duplicate of [Wie überprüfe ich, ob eine Datenbank in Hsqldb/Derby existiert?] (Http://stackoverflow.com/questions/3801773/how-to-check-if-a-database-exists-in-hsqldb -derby) – Raedwald

+0

Die Antwort von knoblyman ist korrekt, nur füge ich hinzu, dass die Suche in der Tabelle in Großbuchstaben erfolgen muss, da die Metadaten in Großbuchstaben geschrieben sind, obwohl Sie Ihre Tabelle in Kleinbuchstaben erstellt haben –

Antwort

6

Ich benutze:

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. 

... und es ist für mich zu arbeiten.

0

Istaos Test für die Existenz eines Tisches hat bei Derby nicht funktioniert. Die Tabelle wurde nie gefunden, obwohl sie zuvor erstellt wurde. Was fehlt, ist, dass Sie TABLE_SCHEM als "APP" angeben und dann den Tabellentyp so einstellen, dass er "TABLE" enthält. Vielleicht funktioniert die Verwendung von null in früheren Versionen, aber die Verwendung von Derby 10.12 findet keine zuvor erstellte Tabelle mit diesen Parametern, die auf null gesetzt sind.

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 " + ... 

Hoffe, das hilft jemand anderem.

Verwandte Themen