JavaDB - проверка существования базы данных - PullRequest
6 голосов
/ 09 августа 2010

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

Ответы [ 2 ]

6 голосов
/ 12 августа 2010

Я использую:

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 голосов
/ 24 июня 2016

Тест Истао на наличие стола у меня не сработал с Дерби.Таблица не была найдена, даже если она была создана ранее.Чего не хватает, вы должны указать TABLE_SCHEM как «APP», а затем установить тип таблицы, чтобы включить «TABLE».Возможно, использование null работало в предыдущих версиях, но использование Derby 10.12 не находит ранее созданную таблицу с этими параметрами, установленными в 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 " + ...

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

...