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ドキュメントによると、「データベースに保存されているテーブル名と一致する必要があります」。