2017-09-18 5 views
-2

하나의 테이블로 간단한 SQL 데이터베이스를 만들고 싶습니다. 8 번 줄은 SQLSyntaxErrorException을 발생시킵니다. 테이블을 생성하면 SQL 예외가 발생합니다

public class LoadDatabase { 
public static void main(String[] args) { 

    //if createConnection() returns a connection issue SQL Statements 
    try (Connection connection = ConnectToDatabase.createConnection()){ 
     Statement command = connection.createStatement(); 
     //gives SQL command "create table" to database 
     command.executeUpdate(ConnectToDatabase.CREATE_TABLE); 
     command.close(); 
    } catch (ClassNotFoundException e) { 
     System.err.println("Could not find database driver"); 
    } catch (SQLException e) { 
     System.err.println("SQL Error"); 
     e.printStackTrace(); 
    } 

} 
} 

//SQL command to create a new table as constant variable 
public final static String CREATE_TABLE = 
     "CREATE TABLE BOOK_INVENTORY (" + 
     "TITLE VARCHAR, " + 
     "AUTHOR VARCHAR, " + 
     "PAGES INT, " + 
     "ISBN VARCHAR, " + 
    ")"; 
+2

후행하는','이 열 목록에 허용되는지 확실하지 않습니다. – luk2302

+0

'ISBN' 열 뒤에','가 있습니다. – Siyual

+0

@ luk2302 허용되지 않음 –

답변

0

SQL 문이 잘못된 테이블입니다 :

  • 것은 결국 , 추가가 있었다.

이 작동합니다 :

CREATE TABLE BOOK_INVENTORY (" + 
     "TITLE VARCHAR, " + 
     "AUTHOR VARCHAR, " + 
     "PAGES INT, " + 
     "ISBN VARCHAR" + 
    ") 
+0

크기는 VARCHAR에 권장되지만 필수 항목은 아니며이 예외의 원인이 아닙니다. 그러나 이것은 여전히 ​​건전한 조언입니다. – JJT

+1

@JJT - 정확합니다. 감사합니다. –

1

예외는 SQL 문에서 마지막 쉼표 (,)로 인해 발생합니다.

//SQL command to create a new table as constant variable 
public final static String CREATE_TABLE = 
    "CREATE TABLE BOOK_INVENTORY (" + 
    "TITLE VARCHAR, " + 
    "AUTHOR VARCHAR, " + 
    "PAGES INT, " + 
    "ISBN VARCHAR, " + 
")"; 

변경에 :

//SQL command to create a new table as constant variable 
public final static String CREATE_TABLE = 
    "CREATE TABLE BOOK_INVENTORY (" + 
    "TITLE VARCHAR, " + 
    "AUTHOR VARCHAR, " + 
    "PAGES INT, " + 
    "ISBN VARCHAR" + 
")"; 

쉼표는 ISBN 후 다른 열 이름이 있음을 의미한다. 오류가 발생하지 않기 때문에.