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 - 检查数据库是不是存在的主要内容,如果未能解决你的问题,请参考以下文章