SQLSyntaxErrorException при создании таблицы с использованием Apache Derby - PullRequest
1 голос
/ 12 января 2012

У меня есть следующая строка кода в моем проекте, который использует Apache Derby:

 stmt.executeUpdate("CREATE table "+productName+" (Time FLOAT NOT NULL PRIMARY KEY, AcidNo FLOAT, Viscosity FLOAT, Temperature FLOAT)");

Когда переменная productName начинается с буквы (то есть «RedProduct»), все работает нормально.Когда productName начинается с цифры (то есть «6Green»), создается таблица , но я получаю следующую ошибку:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "6" at line 1, column 15.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)

Есть идеи?Кстати, поставить имя таблицы в скобках не помогло.Спасибо!

1 Ответ

1 голос
/ 12 января 2012

Вы пробовали помещать двойные кавычки вокруг странных имен?

stmt.executeUpdate("CREATE table \"" + productName + 
    "\" (Time FLOAT NOT NULL PRIMARY KEY, AcidNo FLOAT, Viscosity FLOAT, Temperature FLOAT)");
...