JavaDB - 检查数据库是不是存在

Posted

技术标签:

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

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

【问题讨论】:

How to check if a database exists in Hsqldb/Derby?的可能重复 garlicman 的回答是正确的,只是我补充一点,表格的搜索必须是大写的,因为尽管您已经以小写形式创建了表格,但元数据是大写的 【参考方案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 " + ...

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

【讨论】:

以上是关于JavaDB - 检查数据库是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

检查以检查 Django 中是不是存在数据库表?

Firebase 存储安全规则:检查是不是存在另一个对象/检查对象的元数据

如何检查mysql数据库是不是存在

PouchDB 检查本地数据库是不是存在

检查值是不是存在于数据库行之一中

Android检查数据库是不是存在