2

我在我的 Android 应用程序中使用 SQLite 数据库文件,该文件是通过使用以下方法从存储在 assets 文件夹中的多个部分创建的: ReignDesign - 在 Android 应用程序中使用您自己的 SQLite 数据库

组装过程完成后,我想检查数据库是否正确合并。我想到了以下方法:

  • MD5哈希比较
  • 检查表存在和条目计数

您会推荐哪种方法?有没有更好的办法?

谢谢,

菲利普

4

4 回答 4

5

http://www.sqlite.org/pragma.html#pragma_integrity_check

于 2011-03-23T12:56:51.730 回答
4

在 Api 11 中,SQLiteDatabase有一个方法isDatabaseIntegrityOk用于检查 SQLite 数据库的完整性:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#isDatabaseIntegrityOk()

源代码在这里可用:

https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/core/java/android/database/sqlite/SQLiteDatabase.java#L2585

在旧设备上进行反向移植很容易。

于 2012-06-19T14:24:13.797 回答
1

在我正在开发的应用程序中,我遇到了类似的情况。有多种方法可以做到这一点;但最后我不再担心究竟什么以及如何最好地衡量数据库完整性,而是专注于“我的数据库是否可供我的应用程序使用”。

所以基本上我测试是否:1)我可以正确打开 SQLite 数据库 2)我可以对数据库执行查询 3)预定义查询的结果是否返回预期的结果。

所以基本上:包括一个具有已知 ID 记录的表,该记录给出一个您知道的值,然后尝试读取该值。检查表数是不可能的。

也就是说,我希望这里有一个对数据库系统有很好了解的人会解释 a) 究竟是什么PRAGMA integrity_check,b) 与手动表检查相比,它的可靠性和效率如何。

于 2011-03-23T16:10:40.143 回答
0

在性能和易于编码方面,我更喜欢第一种方法。

于 2011-03-23T12:40:03.440 回答