2010-08-09 3 views
6

Мы создали приложение Java, которое использует базу данных JavaDB в среде Netbeans IDE. Мы хотим, чтобы программа проверялась каждый раз, когда она была запущена, если таблицы базы данных уже созданы и в противном случае создают их. Как мы это делаем? ThanxJavaDB - Проверка наличия базы данных

+0

Возможный дубликат [Как проверить, существует ли база данных в Hsqldb/Derby?] (Http://stackoverflow.com/questions/3801773/how-to-check-if-a-database-exists-in-hsqldb -derby) – Raedwald

+0

Ответ на чеснок считается правильным, только я добавляю, что поиск таблицы должен быть в верхнем регистре, потому что, несмотря на то, что вы создали таблицу в нижнем регистре, метаданные находятся в верхнем регистре –

ответ

6

Я использую:

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. 

... и это работа для меня.

0

Испытание Istao на наличие таблицы не помогло мне с Derby. Таблица не была найдена, даже если она была создана ранее. Что не хватает, вам нужно указать TABLE_SCHEM как «APP», а затем установить тип таблицы, чтобы включить «ТАБЛИЦА». Возможно, использование null работает в предыдущих версиях, но использование Derby 10.12 не находит ранее созданную таблицу с указанными параметрами равными нулю.

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

Надеюсь, это поможет кому-то еще.

 Смежные вопросы

  • Нет связанных вопросов^_^