6

我们在 Netbeans IDE 中创建了一个使用 JavaDB 数据库的 Java 应用程序。我们希望程序在每次启动时检查数据库的表是否已经创建,否则创建它们。我们如何做到这一点?谢谢

4

2 回答 2

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.

...这对我有用。

于 2010-08-12T06:18:51.190 回答
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 " + ...

希望这对其他人有帮助。

于 2016-06-24T16:44:47.457 回答