2015-02-24 2 views
1

У меня проблемы с вставкой записей в таблицу через UCanAccess. Моя вставка выглядит следующим образом:net.ucanaccess.triggers.TriggerException: таблица не существует. : Z_2015_02_24

INSERT INTO [2015_02_24_15_52_29_926_test_schema] (...) 

Вкладыш уволят стандартным java.sql.Statement.

UCanAccess внутренне преобразует sql. Это результат:

INSERT INTO Z_2015_02_24_15_52_29_926_test_schema (...) 

Только почему UCanAccess добавляет 'Z' к имени таблицы?

Я отлаживал код an и выяснял, что изменение происходит в SQLConverter.escape(sql) в классе SQLConverter от UCanAccess.

ответ

1

UCanAccess не разрешает номера в начале имени таблицы.

Просто используйте TBL_2015... как ваше имя таблицы.

2

UCanAccess предназначен для поддержки имен таблиц, таких как 2015_02_24_15_52_29_926_test_schema. Для этого ему необходимо использовать внутренний именованный переназначение. Возможно, в очень старых версиях есть ошибка, но в INSERT, например, insert into [2015_02_24_15_52_29_926_test_schema] values(1,'f') работает в 0: в последних версиях (я только что пробовал с 2.0.9.2 и 2.0.9.3).

+0

Спасибо за ваш ответ. Я использую последнюю версию, но для меня это не работает. Тем не менее, это удовлетворительное решение для меня добавить «TBL_» в имя таблицы. – logineimer

+0

Странно, я также разработал несколько тестов junit об этом конкретном случае, и все они успешно выполняются. В любом случае, если вы можете улучшить именование, просто сделайте это. – jamadei