为什么 UCanAccess 需要密码而 Jackcess 不需要?

Why UCanAccess needs password and Jackcess doesn't?

最近我一直在使用(测试)这两种解决方案来从 Access(MDB 文件)中获取一些数据。而且我认为 Jackcess 不需要密码来访问数据库的数据,而 UCanAccess 只有在我输入密码(如果数据库有)时才有效。

那么,wtf 真的发生了吗?如果 Jackcess 是 UCanAccess 的依赖项,为什么它需要密码?或者为什么 Jackcess 也不需要密码?

谢谢!

当数据库密码分配给旧格式的 .mdb 数据库时,文件实际上并未加密。 (旧版本的 MS Access 应用程序有一个单独的选项来加密文件,但即使是这种保护也非常薄弱。)

如果文件未加密,则 Jackcess 不需要密码即可打开它。事实上,Jackcess 提供了一种从未加密(但 "password protected").mdb 文件检索数据库密码的方法。

正如在对您的问题的评论中所建议的,UCanAccess 开发团队决定与其他更高级别的数据访问方法保持一致,并要求用户在打开数据库时提供正确的密码。如果你真的想避免将数据库密码编码到 UCanAccess 应用程序中,那么你总是可以

  • 先用Jackcess打开数据库文件,
  • 使用 Jackcess 调用来检索数据库密码,
  • 关闭与数据库的 Jackcess 连接,然后
  • 打开 UCanAccess 数据库连接时提供数据库密码。

请注意,当将数据库密码应用于较新格式的 .accdb 数据库时,文件确实 加密的,因此 Jackcess 和 UCanAccess 都需要正确的密码(以及额外的组件 "Jackcess Encrypt",加上依赖项)打开它。