Как записать в базу данных Access в Windows 10

Поскольку мост jdbc odbc больше недоступен (см. вопрос/ответ), я попробовал UCanAccess, который отлично работает при чтении базы данных, но в Windows 10 выдает ошибку при попытке записи: ([CONCURRENT_PROCESS_ACCESS] - File marked as read only. Notice that only one process (one VM) for time can access in writing mode.).

Один и тот же код отлично читается и записывается с помощью драйвера UCanAccess в Windows 8.1 и Windows 7.

В настоящее время я не могу возиться, так как у меня нет системы Windows 10; тесты проводились опытным пользователем при одной установке Windows 10. Рассматриваемый файл mdb был полностью доступен пользователю. Было проверено несколько путей к файлу mdb (c:\ProgramData, Downloads) с тем же результатом: чтение нормально, запись не удалась.

Если какой-либо пользователь Windows 10 хочет проверить это на себе в различных каталогах и, возможно, манипулируя разрешениями, это было бы здорово.

Вот ссылка на mdb-файл, который я использую . Вот ссылка на тестовую программу (в виде исполняемого файла). Вот ссылка на исходный код.

Процесс тестирования заключается в размещении файла mdb, а затем запуске тестовой программы с параметром пути. Итак, в командной строке Windows что-то вроде:

TestDbAccess c:\my\dir

Где c:\my\dir - это место, куда вы помещаете файл mdb.

ОБНОВЛЕНИЕ: я должен был включить в первоначальный вопрос, что желательно работать на реальном оборудовании, а не на виртуализированном в VBox.

ОБНОВЛЕНИЕ 2: ЛОЖНАЯ ТРЕВОГА: рассматриваемый файл mdb действительно был уровня "Access 97", основанный на 20-м байте файла. Проблема заключалась в том, что компонент, у которого была задача создать файл mdb, каким-то образом иногда создавал его как «Access 2000», а иногда как «Access 97». Как именно это произошло, до сих пор остается загадкой, но, похоже, это не зависит от базовой версии ОС. Мой совет всем, кто сталкивается с ошибкой CONCURRENT_PROCESS_ACCESS: верьте этому!


person Dale    schedule 21.04.2015    source источник
comment
Версия 2.0.9.5 различает два отдельных сообщения об ошибках для параллельного доступа к процессу и доступа только для чтения 97: слияние в одном сообщении двух разных причин состояния только для чтения сделало сообщение вводящим в заблуждение.   -  person jamadei    schedule 29.04.2015
comment
Спасибо jamadei, Хоть что-то хорошее вышло из фаер-бура.   -  person Dale    schedule 20.05.2015


Ответы (1)


У UCanAccess и Jackcess нет проблем с Windows 10 как таковых. Я только что использовал UCanAccess для запуска этого оператора SQL...

UPDATE CW_EPG_CAPTURES SET title = 'Win10 test'

... с вашей образцом базы данных (cw_record.mdb в формате Access 2000) на виртуальной машине VirtualBox с

  • Windows 10 Pro Technical Preview, сборка 10041 (64-разрядная версия)
  • JDK 7u45 (64-разрядная версия)
  • NetBeans 7.4
  • UCanAccess 2.0.9.4

и он успешно выполнил обновление без жалоб.

Файл .mdb был загружен непосредственно по ссылке в вашем вопросе и сохранен в

C:\Пользователи\Общедоступные

Обновление:

Как оказалось, проблема не имела ничего общего с Windows 10. Проблема заключалась просто в том, что иногда для тестирования использовался файл Access 97. Jackcess и UCanAccess просто предлагают поддержку только для чтения для файлов Access 97.

person Gord Thompson    schedule 22.04.2015
comment
@ Горд .. не могли бы вы помочь мне с этим? когда вы свободны.. stackoverflow.com/questions/29801466/ - person Sai Avinash; 22.04.2015
comment
Gord, Вы использовали родной Windows (не Oracle VBox)? Я собираюсь оставить этот вопрос без ответа на некоторое время на случай, если у кого-то еще возникнет желание провести тест. Спасибо Горд! До 50% попыток UCanAccess в Windows 10 завершаются успешно. - person Dale; 22.04.2015
comment
@Dale - Нет, это была виртуальная машина VirtualBox на хосте Windows 7. - person Gord Thompson; 22.04.2015
comment
Я согласен с оценкой Горда в его обновлении выше: ничего общего с Windows 10… ложная тревога. Извини. - person Dale; 26.04.2015
comment
Я получаю сообщение об ошибке No suitable driver found for jdbc:ucanaccess://F:/RBL_test.accdb в JDK 8. Что мне делать? - person Nayan; 02.12.2016
comment
@Nayan - Что мне делать? - Задать новый вопрос. - person Gord Thompson; 02.12.2016