如何在 Windows 10 上写入 Access 数据库

How to write to an Access database on Windows 10

因为 jdbc odbc 桥不再可用(参见 this question/answer), I tried 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:\ProgramDataDownloads),结果相同:读取正常,写入失败。

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

这里是link到mdb file I'm using. Here is a link to the test program (as an exe). Here is a link to the source code

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

TestDbAccess c:\my\dir

其中 c:\my\dir 是您放置 mdb 文件的位置。

更新:我应该在最初的问题中包含 运行ning 在实际硬件上是所需要的,而不是 运行ning 在 VBox 中虚拟化。

更新 2:误报: 有问题的 mdb 文件确实 "Access 97" 级别,基于文件的字节 20。问题在于,负责创建 mdb 文件的组件有时会以某种方式将其创建为 "Access 2000",而在其他时间将其创建为 "Access 97"。这究竟是如何发生的仍然是个谜,但它似乎并不取决于底层的 OS 版本。我对 运行 陷入 CONCURRENT_PROCESS_ACCESS 错误的人的建议:相信它!

UCanAccess 和 Jackcess 没有 Windows10 本身 的问题。我刚刚使用 UCanAccess 运行 这个 SQL 声明 ...

UPDATE CW_EPG_CAPTURES SET title = 'Win10 test'

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

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

并且它毫无怨言地成功执行了更新。

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

C:\Users\Public

更新:

事实证明,问题与 Windows10 无关。问题很简单,有时会使用 Access 97 文件进行测试。 Jackcess 和 UCanAccess 仅提供对 Access 97 文件的只读支持。