2

因为 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.)。

在 Windows 8.1 和 Windows 7 上使用 UCanAccess 驱动程序可以完美地读取和写入相同的代码。

我目前无法修补,因为我没有 Windows 10 系统;这些测试由高级用户在单个 Windows 10 安装上执行。用户可以完全访问有问题的 mdb 文件。测试了 mdb 文件的多个路径位置 ( c:\ProgramData, Downloads),结果相同:读取正常,写入失败。

如果任何 Windows 10 用户想要在各种目录中自己测试它并可能操纵权限,那就太好了。

这是我正在使用的 mdb 文件的链接。这是测试程序的链接(作为 exe)。这是源代码的链接。

测试过程是放置 mdb 文件,然后使用路径参数运行测试程序。因此,在 Windows 命令提示符下,类似于:

TestDbAccess c:\my\dir

c:\my\dir你把mdb文件放在哪里。

更新:我应该在最初的问题中包括在实际硬件上运行是期望的,而不是在 VBox 中运行虚拟化。

UPDATE2:错误警报: 有问题的 mdb 文件确实“访问 97”级别,基于文件的字节 20。问题在于,负责创建 mdb 文件的组件有时会以某种方式将其创建为“Access 2000”,而在其他时候则创建为“Access 97”。究竟是如何发生的仍然是一个谜,但它似乎并不依赖于底层操作系统版本。我对遇到 CONCURRENT_PROCESS_ACCESS 错误的任何人的建议:相信它!

4

1 回答 1

3

UCanAccess 和 Jackcess 对 Windows 10本身没有问题。我只是使用 UCanAccess 来运行这个 SQL 语句......

UPDATE CW_EPG_CAPTURES SET title = 'Win10 test'

... 在 VirtualBox 虚拟机上针对您的示例数据库(cw_record.mdb,Access 2000 格式)

  • Windows 10 专业版技术预览版,内部版本 10041(64 位)
  • JDK 7u45(64 位)
  • NetBeans 7.4
  • UCanAccess 2.0.9.4

并且它成功地执行了更新而没有抱怨。

.mdb 文件直接从您问题中的链接下载并保存到

C:\用户\公共

更新:

事实证明,这个问题与 Windows 10 无关。问题只是有时会使用 Access 97 文件进行测试。Jackcess 和 UCanAccess 只是为 Access 97 文件提供只读支持。

于 2015-04-22T12:32:17.520 回答