代码之家  ›  专栏  ›  技术社区  ›  Skarab

如何检查Hsqldb/Derby中是否存在数据库?

  •  6
  • Skarab  · 技术社区  · 14 年前

    INFORMATION_SCHEMA.SCHEMATA --但这两个数据库似乎没有这样的表。

    mysql查询的替代方法是什么:

     SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = <DATABASE NAME>
    

    2 回复  |  直到 7 年前
        1
  •  8
  •   Thomas Mueller    14 年前

    您可以检查数据库文件是否存在。缺点是这取决于数据库URL如何映射到文件名,而文件名则取决于数据库内部结构,例如数据库类型和数据库版本(!),可能还有系统属性。对于Derby,您需要检查目录是否存在,另外还需要检查某些文件,例如“服务属性“(看来)。对于HSQLDB,您可以检查databaseName.properties属性存在。对于H2,检查databaseName.H2.db文件。这与当前版本的Derby/HSQLDB/H2相同,并且在将来可能会改变。

    当然,问题是:为什么需要知道数据库是否已经存在?

    检查架构是否存在

    也许你真的不想检查 数据库 存在。相反,您只想检查 架构

    SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '<SCHEMA NAME>'
    

        2
  •  1
  •   fredt    14 年前

    对于hsqldb2.0(使用最新的快照以提高与MySQL的兼容性),只要您的数据库/模式不被称为“PUBLIC”,就不需要做太多更改

    从信息中选择架构名称_SCHEMA.SCHEMATA模式其中SCHEMA\u NAME='数据库名称'

    如果该模式不存在,则运行模式创建代码,就像使用MySQL一样。