2012-01-11 4 views
1

У меня есть следующий код в моем проекте, который использует Apache Derby:SQLSyntaxErrorException при создании таблицы, с помощью 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

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

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

Так что цитаты работали с «Создать таблицу». Но теперь у меня есть еще одна строка stmt.executeQuery ("select * from \" "+ productName +" \ "order by Time"). Двойные кавычки не работают с именами таблиц, которые начинаются с буквы (даже если это работает с названиями продуктов, начинающимися с числа!). Ошибка: java.sql.SQLSyntaxErrorException: Table/View 'Sample1' не существует. – user1144273

+0

См. [Правила для SQL92Identifiers] (http://db.apache.org/derby/manuals/reference/sqlj10.html#HDRSQLJ1003454): *** «Обозначенные идентификаторы - это идентификаторы, окруженные двойными кавычками». *** –

+0

И этот [SQL92Identifier] (http://db.apache.org/derby/manuals/reference/sqlj11.html#HDRSQLJ1004091): *** «Идентификаторы SQL92 не чувствительны к регистру (если не ограничены двойными кавычками)» *** –

 Смежные вопросы

  • Нет связанных вопросов^_^