2017-09-18 31 views
-2

1つのテーブルで簡単な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文が間違っているテーブル

//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

です:

  • 余分,が最後にありました。

これは動作するはずです:

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の後にあることを示唆しています。エラーが発生していないためです。

関連する問題