【问题标题】:Android database md5 change, why change same size?Android 数据库 md5 更改,为什么更改相同的大小?
【发布时间】:2013-11-10 19:20:40
【问题描述】:

我正在开发一个使用 SQLite 数据库的 Android 游戏。为了验证数据库是否正确下载,我使用 MD5。它工作正常,我的问题是当我对数据库进行查询时:MD5 更改但数据库大小保持不变。如果我不插入更新,有谁知道为什么它会更改 MD5?我只做选择。 有没有办法检查所有设备上的数据库是否正确?

//安装时MD5->

11-10 20:04:17.722: I/DebugCayroDev(4853): {MD5.java checkMD5} 2488C4CD2F70337BA21E4CA03EDEAFF0 和文件 md5: 2488c4cd2f70337ba21e4ca03edeaff0

//大小一样

11-10 20:04:46.212: V/DebugCayroDev(4853): {MD5.java checkMD5} 2113748992

// MD5 选择后

11-10 20:04:46.212: I/DebugCayroDev(4853): {MD5.java checkMD5} 2488C4CD2F70337BA21E4CA03EDEAFF0 和文件 md5: 67d0b72e0d375ee0c5578331c4b74802

【问题讨论】:

  • MD5 仅在检查下载的文件是否被正确复制时才有效。数据库内部就像一个文件系统,它可以随时更改。它还预先分配空间。甚至可以在不增加文件大小的情况下插入数据。在任何数据库访问之后,您不应该使用相同的 MD%。
  • 感谢您的回答。我如何知道内部 Android 数据库是否与另一个外部数据库相同?
  • 我不明白你的情况。你知道它下载好了,你想和什么比较,为什么?
  • 我想知道设备数据库是否等于外部数据库。如果它们不相等,我想显示一个弹出窗口,告诉用户需要更新数据库。

标签: java android database sqlite md5


【解决方案1】:

正如其他人所说,您不能依靠数据库文件的哈希来告诉您它是否已更新。

我能想到的唯一建议是向您的数据库添加一个表,该表包含数据库最后一次更新的时间戳。无论何时更新服务器端的数据库,都必须在以任何方式更新数据库时更新该时间戳。

然后,您可以比较本地和服务器时间戳以查看版本是否匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多