JDBC ODBC MS Access 2003 Запрос на обновление не обновляет регистр

Использование Ms Access 2003 в Windows Vista Java 1.7.0_45 и IDE NetBeans 7.4

Я пытаюсь выполнить простой запрос UPDATE для таблицы с именем EMPLOYEES.

stmt.executeUpdate("UPDATE EMPLOYEES SET Name='John' WHERE Code='A07'");

А вот имя сотрудника с кодом А07 в базе не меняется.

Другие запросы (INSERT, SELECT) работают нормально, например:

 stmt.executeUpdate("INSERT INTO EMPLOYEES VALUES (....)");

or

 ResultSet rs = stmt.executeQuery("SELECT * FROM " + nombreTabla);

работать, как ожидалось.

Для ОБНОВЛЕНИЯ я пробовал разные вещи, но ни один из них не работает:

  • Использование executeQuery вместо executeUpdate для запроса UPDATE вызывает исключение SQL: «Результат не был создан»

  • Добавление «[ ]» в поля также не обновило запись:

    stmt.executeUpdate("ОБНОВЛЕНИЕ EMPLEADOS SET [Имя]='Джон', ГДЕ [Код]='A07'");

Никогда раньше не работал с Access, не знаю, что делаю не так. Может проблема в привилегиях? Как я могу предоставить привилегию обновления в этом случае?


person rodrunner    schedule 16.11.2013    source источник
comment
do this__ int i = stmt.executeUpdate (ОБНОВЛЕНИЕ НАБОРА СОТРУДНИКОВ Имя = 'Джон' ГДЕ Код = 'A07'); ___и проверьте, больше ли переменная i нуля или нет. Если он не равен нулю, это означает, что ваше обновление должно произойти.   -  person AJ.    schedule 16.11.2013
comment
Спасибо. Да, он возвращает i=1, но когда я проверяю таблицу в MS Access, имя не меняется (я обновил и даже переоткрыл базу).   -  person rodrunner    schedule 16.11.2013
comment
попробуйте stmt.close() после обновления.   -  person AJ.    schedule 16.11.2013
comment
Заявление stmt было создано в попытке с ресурсами. Но я попытался выпустить его с помощью stmt.close(), и запись также не изменилась.   -  person rodrunner    schedule 16.11.2013
comment
тогда я думаю, вам следует создать другую базу данных с именем diff   -  person AJ.    schedule 16.11.2013
comment
После выполнения оператора UPDATE попробуйте явно вызвать метод .Close() вашего объекта Connection.   -  person Gord Thompson    schedule 16.11.2013
comment
спасибо, tt работает, выполняя commit() соединения после обновления   -  person rodrunner    schedule 16.11.2013


Ответы (1)


Проблемы с обновлениями, которые не записываются обратно в базу данных Access, часто возникают из-за того, что объект Connection базы данных не был закрыт явным образом путем вызова его метода .Close(). В JDBC-ODBC, если объект соединения просто выходит из области действия, в то время как соединение все еще .Open(), ожидающие обновления иногда отбрасываются.

person Gord Thompson    schedule 16.11.2013