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

时间:2015-10-07 13:16:08

标签: java ms-access ucanaccess jackcess

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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