我正在尝试使用 JavaDB (Derby) 创建表,但如果我尝试添加 IF NOT EXISTS:
CREATE TABLE IF NOT EXISTS etc (ID BIGINT PRIMARY KEY, title VARCHAR(150))
我得到错误:
java.sql.SQLSyntaxErrorException:语法错误:在第 1 行第 17 列遇到“NOT”。
我记得它适用于 MySQL。检查表是否存在的语法/最简单的方法是什么?
编辑:
最后我找到了解决方案:
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rs = dbmd.getTables(null, "APP", "ETC", null);
if (rs.next()) {
System.out.println("Table " + rs.getString(3) + " exists");
}
我注意到如果表名是使用引号“etc”创建的,则表名区分大小写,否则 - 名称必须为大写。根据 API 文档:“必须与存储在数据库中的表名匹配”。