如何检查SQLite文件的一致性(健康检查)

时间:2011-03-23 12:01:48

标签: android file sqlite consistency

我在Android应用程序中使用SQLite数据库文件,该文件是使用以下方法从assets文件夹中存储的多个部分创建的: ReignDesign - Using your own SQLite database in Android applications

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

  • MD5哈希比较
  • 检查表存在和输入计数

您会推荐哪种方法?还有更好的方法吗?

谢谢,

菲利普

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分: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

在旧设备上向后移动很容易。

答案 2 :(得分:1)

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

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

所以基本上:包含一个包含已知ID记录的表,该表提供您知道的值,然后尝试读取该值。检查表计数是不可能的。

那就是说我希望这里对DB系统有很好了解的人会解释a)PRAGMA integrity_check的确切做法和b)它的可靠性以及与手动表格检查相比的效率。

答案 3 :(得分:0)

对于性能和编码的简易性,我更倾向于第一种方法。