2017-09-18 4 views
-2

Je voudrais créer une base de données SQL simple avec une table. La ligne 8 lève une exception SQLSyntaxErrorException.Création d'une table throws SQL Exception

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(); 
    } 

} 
} 

C'est la table

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

Vous ne savez pas si un ',' final est autorisé dans la liste des colonnes. – luk2302

+0

Vous avez un ',' après votre colonne 'ISBN'. – Siyual

+0

@ luk2302 Il n'est pas autorisé –

Répondre

0

Votre instruction SQL est incorrecte:

  • Il y avait , supplémentaire à la fin.

Cela devrait fonctionner:

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

Bien que les tailles soient recommandées pour 'VARCHAR', elles ne sont pas obligatoires et ne sont pas la cause de cette exception. Cependant, c'est toujours un bon conseil. – JJT

+1

@JJT - Vous avez raison, merci –

1

L'exception est causée par la virgule finale dans votre instruction 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, " + 
")"; 

Modification:

//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" + 
")"; 

La virgule est ce qui implique qu'il existe un autre nom de colonne après ISBN. Comme il n'y en a pas, cela provoque l'erreur.