2010-08-09 6 views
6

Nous avons créé une application Java qui utilise la base de données JavaDB dans l'EDI NetBeans. Nous voulons que le programme vérifie chaque fois qu'il démarre si les tables de la base de données ont déjà été créées et sinon les crée. Comment faisons-nous cela? ThanxJavaDB - Vérification de l'existence d'une base de données

+0

duplication possible de [Comment vérifier si une base de données existe dans Hsqldb/Derby?] (Http://stackoverflow.com/questions/3801773/how-to-check-if-a-database-exists-in-hsqldb -derby) – Raedwald

+0

la réponse de garlicman est correcte, que j'ajoute que la recherche de la table doit être en majuscules parce que, malgré que vous avez créé votre table en minuscules, les métadonnées sont en majuscules –

Répondre

6

J'utilise:

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. 

... et c'est un travail pour moi.

0

Le test d'Istao pour l'existence d'une table ne fonctionnait pas pour moi avec Derby. La table n'a jamais été trouvée même si elle a déjà été créée. Qu'est-ce qui manque est que vous devez spécifier le TABLE_SCHEM comme "APP", puis définissez le type de table pour inclure "TABLE". Peut-être que l'utilisation de null a fonctionné dans les versions précédentes, mais en utilisant Derby 10.12 ne trouve pas une table précédemment créée avec ces paramètres mis à null.

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

Espérons que cela aide quelqu'un d'autre.

Questions connexes