因为jdbc odbc桥不再可用(请参阅this question/answer),我尝试了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.
)。
使用Windows 8.1和Windows 7上的UCanAccess驱动程序完全相同的代码读写。
我目前无法修补,因为我没有Windows 10系统;测试由高级用户在单个Windows 10安装上执行。用户可以完全访问有问题的mdb文件。测试了mdb文件的几个路径位置(c:\ProgramData
,Downloads
),结果相同:读取正常,写入失败。
如果任何Windows 10用户想要在各种目录中自行测试并可能操纵权限,那就太棒了。
以下是mdb file I'm using的链接。这是test program (as an exe)的链接。这是指向the source code的链接。
测试过程是放置mdb文件,然后使用路径参数运行测试程序。所以在Windows命令提示符下,例如:
TestDbAccess c:\my\dir
c:\my\dir
是放置mdb文件的位置。
更新:我应该在最初的问题中包含在实际硬件上运行所需的内容,而不是在VBox中运行虚拟化。
UPDATE2: FALSE ALARM: 有问题的mdb文件确实是 " Access 97" level,基于文件的字节20。问题是,具有创建mdb文件任务的组件以某种方式将其创建为" Access 2000"有时和" Access 97"在其他时间。究竟如何发生仍然是一个谜,但它似乎并不依赖于底层操作系统版本。我对任何遇到CONCURRENT_PROCESS_ACCESS错误的人的建议是:相信它!