Java Android数据库md5改变了,为什么要改变同样的大小?

Java Android数据库md5改变了,为什么要改变同样的大小?,java,android,database,sqlite,md5,Java,Android,Database,Sqlite,Md5,我正在开发一款安卓游戏,使用SQLite数据库。为了验证数据库是否正确下载,我使用MD5。它工作得很好,我的问题是当我对数据库进行查询时:MD5发生了变化,但数据库大小保持不变。有人知道如果我不做任何更新,为什么它会改变MD5吗?我只做选择。 是否有方法检查数据库是否与所有设备正确连接 //MD5安装时-> 11-10 20:04:17.722:I/DebugCayroDev(4853):{MD5.java checkMD5}2488C4CD2F70337BA21E4CA03EDEAFF0和文件

我正在开发一款安卓游戏,使用SQLite数据库。为了验证数据库是否正确下载,我使用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}2488c4cd2f70337ba21e4ca03edeaf0和文件MD5:67d0b72e0cd375ee0c5578331c4b74802

,正如其他人所说的,您不能依靠数据库文件的散列来判断它是否已更新

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


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

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