2013-08-08 1 views
1

나는 JavaDB에서는 (더비)를 사용하여 테이블을 만들려고 해요,하지만 난 추가하려고하면하지가 존재하는 경우 :JavaDB - 존재하지 않는 테이블 만들기 - 방법?

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

내가가 작동 기억으로 :

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

나는 오류를 얻을 MySQL. 테이블이 있는지 확인하는 구문/가장 간단한 방법은 무엇입니까?

편집 : 마지막으로 나는 해결책을 발견

:

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 테이블이 없습니다. 표 목록 : 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

관련 문제