我们创建了一个在Netbeans IDE中使用JavaDB数据库的java应用程序。我们希望程序在每次启动时检查数据库的表是否已经创建,否则创建它们。 我们怎么做? 感谢名单
答案 0 :(得分: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.
......这对我有用。
答案 1 :(得分: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 " + ...
希望这有助于其他人。