JavaDB - 检查数据库是否存在

时间:2010-08-09 06:25:10

标签: netbeans derby javadb

我们创建了一个在Netbeans IDE中使用JavaDB数据库的java应用程序。我们希望程序在每次启动时检查数据库的表是否已经创建,否则创建它们。 我们怎么做? 感谢名单

2 个答案:

答案 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.

......这对我有用。

答案 1 :(得分:0)

Istao对于桌子存在的测试对Derby来说并不适合我。即使先前已创建该表,也从未找到该表。缺少的是你必须将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 " + ...

希望这有助于其他人。