【问题标题】:JavaDB - Checking if a database existsJavaDB - 检查数据库是否存在
【发布时间】:2010-08-09 06:25:10
【问题描述】:

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

【问题讨论】:

标签: netbeans derby javadb


【解决方案1】:

我用:

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.

... 这对我有用。

【讨论】:

    【解决方案2】:

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

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-11-30
      • 2014-07-08
      • 2019-06-24
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多