2

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

4

1 に答える 1

-3
if not exists (select * from sysobjects where name='etc' and xtype='U')
create table etc(
   ID BIGINT PRIMARY KEY, title VARCHAR(150)
);

テーブルが存在しない場合は、etc という名前のテーブルを作成します。

詳細はこちら

幸運を

于 2013-08-08T12:04:08.003 に答える