Я пытаюсь создать таблицу с помощью JavaDB (Derby), но если я пытаюсь добавить IF NOT EXISTS:JavaDB - СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ - как?
CREATE TABLE IF NOT EXISTS etc (ID BIGINT PRIMARY KEY, title VARCHAR(150))
Я получаю ошибку:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "NOT" at line 1, column 17.
Как я помню, он работает на MySQL. Каков синтаксис/простейший метод проверки наличия таблицы?
EDIT:
Наконец я нашел решение:
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rs = dbmd.getTables(null, "APP", "ETC", null);
if (rs.next()) {
System.out.println("Table " + rs.getString(3) + " exists");
}
я заметил, что имя таблицы чувствителен к регистру, если он создается с использованием кавычек «и т.д.», а если нет - имя должен быть верхний регистр. Согласно документации API: «должно соответствовать имени таблицы, поскольку оно хранится в базе данных».
Спасибо, но таких как sysobjects table в моей базе данных нет. Список Таблица: SYSCONGLOMERATES SYSTABLES SYSCOLUMNS SYSSCHEMAS SYSCONSTRAINTS SYSKEYS SYSDEPENDS SYSALIASES SYSVIEWS SYSCHECKS SYSFOREIGNKEYS SYSSTATEMENTS Sysfiles SYSTRIGGERS SYSSTATISTICS SYSDUMMY1 SYSTABLEPERMS SYSCOLPERMS SYSROUTINEPERMS SYSROLES SYSSEQUENCES SYSPERMS. Все еще получите erorr .. –
Вы пытались заменить 'sysobjects'' systables'? – ClaireG
Пробуйте эту ссылку; есть более полезные вещи, которые вы можете попробовать заменить первый оператор select. http://stackoverflow.com/questions/205736/get-list-of-all-tables-in-oracle – ClaireG