2013-08-08 13 views
1

Je suis en train de créer la table à l'aide JavaDB (Derby), mais si je tente d'ajouter SINON EXISTE:JavaDB - CREATE TABLE SI PAS EXISTS - comment?

CREATE TABLE IF NOT EXISTS etc (ID BIGINT PRIMARY KEY, title VARCHAR(150)) 

Je reçois l'erreur:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "NOT" at line 1, column 17.

Comme je me souviens qu'il travaille sur MySQL Quelle est la syntaxe/méthode la plus simple pour vérifier si la table existe?

EDIT:

J'ai finalement trouvé la solution:

DatabaseMetaData dbmd = conn.getMetaData(); 
ResultSet rs = dbmd.getTables(null, "APP", "ETC", null); 
if (rs.next()) { 
    System.out.println("Table " + rs.getString(3) + " exists"); 
} 

J'ai remarqué que le nom de la table est sensible à la casse si elle est créée avec l'aide de citations "etc", et sinon - le nom doit être en majuscule. Selon la documentation de l'API: "doit correspondre au nom de la table telle qu'elle est stockée dans la base de données".

Répondre

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

Il créera une table appelée etc si elle n'existe pas.

Plus de cela sur here.

Bonne chance

+1

Merci, mais il n'y a pas de telle table sysobjects dans ma base de données. Liste de table: SYSCONGLOMERATES SYSTABLES SYSCOLUMNS SYSSCHEMAS sysconstraints syskeys sysdepends SYSALIASES SYSVIEWS SYSCHECKS SYSFOREIGNKEYS SYSSTATEMENTS SYSFILES SYSTRIGGERS sysstatistics SYSDUMMY1 SYSTABLEPERMS SYSCOLPERMS SYSROUTINEPERMS sysroles SYSSEQUENCES SYSPERMS. Toujours obtenir l'erorr .. –

+0

Avez-vous essayé de remplacer 'sysobjects' avec' systables'? – ClaireG

+0

Essayez ce lien; Il y a des choses plus utiles que vous pouvez essayer de remplacer la première déclaration de sélection. http://stackoverflow.com/questions/205736/get-list-of-all-tables-in-oracle – ClaireG