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

标签 java ms-access ucanaccess jackcess

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

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

谢谢!

最佳答案

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

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

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

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

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

关于java - 为什么 UCanAccess 需要密码而 Jackcess 不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32993249/

相关文章:

java - 如何让 Maven 使用 Eclipse 工作区默认的 JRE?

c++ - 使用指针调用 C++ DLL 函数

php - 如何在 PHP 中用 SQLite 替换 MS Access

ms-access - 是否可以将二进制变量显示为数据 TableView 表单中的复选框?

java - UCanAccess Access 数据库文件的相对路径

java - 对于非常大的数据集,我应该使用 `HashSet` 还是 `TreeSet`?

java - 如何修复 : ON DELETE CASCADE ON UPDATE CASCADE using derby/EmbeddedDriver

java - synchronized 是否像 Lock.lock() 那样停放并发线程?

java - UCanAccessSQLException : constraint violation

c# - UCanAccess、IKVM 和 C#