Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何检查SQLite文件一致性(运行状况检查)_Android_File_Sqlite_Consistency - Fatal编程技术网

Android 如何检查SQLite文件一致性(运行状况检查)

Android 如何检查SQLite文件一致性(运行状况检查),android,file,sqlite,consistency,Android,File,Sqlite,Consistency,我在我的Android应用程序中使用了一个SQLite数据库文件,该文件是使用以下方法从存储在assets文件夹中的多个片段创建的: 组装过程完成后,我想检查数据库是否正确合并。我想到了以下方法: MD5哈希比较 检查表的存在性和条目计数 你会推荐哪种方法?有更好的办法吗 谢谢 Philipp在性能和编码的易用性方面,我更喜欢第二种方法,而不是第一种方法 我在开发的一个应用程序中遇到了类似的情况。做这件事的方法多种多样;但最终我不再担心什么是数据库完整性的准确度量以及如何最好地度量数据库

我在我的Android应用程序中使用了一个SQLite数据库文件,该文件是使用以下方法从存储在assets文件夹中的多个片段创建的:

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

  • MD5哈希比较
  • 检查表的存在性和条目计数
你会推荐哪种方法?有更好的办法吗

谢谢


Philipp

在性能和编码的易用性方面,我更喜欢第二种方法,而不是第一种方法

我在开发的一个应用程序中遇到了类似的情况。做这件事的方法多种多样;但最终我不再担心什么是数据库完整性的准确度量以及如何最好地度量数据库完整性,而是专注于“我的应用程序是否可以使用我的数据库”

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

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


也就是说,我希望这里对DB系统有很好了解的人能够解释a)PRAGMA integrity\u check的确切功能,以及b)与手动表格检查相比,它的可靠性和效率有多高。

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

源代码可在此处获得:


在旧设备上进行后端口很容易。

我现在使用
PRAGMA integrity\u check
加上MD5校验和测试来验证数据库的完整性。生成MD5校验和相当快,而在我看来,使用SHA-1需要很长时间。按照您的建议进行手动输入检查可能是唯一能够真正确定的方法。然而,要实现它们还需要做大量的工作。