Поскольку мост 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: верьте этому!