2013-08-08 3 views
1

Я пытаюсь создать таблицу с помощью 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: «должно соответствовать имени таблицы, поскольку оно хранится в базе данных».

ответ

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

Это создаст таблицу под названием etc, если она не существует.

Больше этого над here.

Удачи

+1

Спасибо, но таких как 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 .. –

+0

Вы пытались заменить 'sysobjects'' systables'? – ClaireG

+0

Пробуйте эту ссылку; есть более полезные вещи, которые вы можете попробовать заменить первый оператор select. http://stackoverflow.com/questions/205736/get-list-of-all-tables-in-oracle – ClaireG

 Смежные вопросы

  • Нет связанных вопросов^_^