Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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
如何确定.sqlite或.sqback在Java中是否已损坏?_Java_Android_Sqlite_Corruption - Fatal编程技术网

如何确定.sqlite或.sqback在Java中是否已损坏?

如何确定.sqlite或.sqback在Java中是否已损坏?,java,android,sqlite,corruption,Java,Android,Sqlite,Corruption,我得到了一个目录目录,每个目录都包含一组我必须解析的.sqlite和.sqback文件 问题是,我认为当我收到这些文件时,其中一些文件已损坏,因为我收到了错误: 错误:[SQLITE\u损坏]数据库磁盘映像格式不正确(数据库磁盘映像格式不正确) 在我的控制台上,当我尝试处理它们时。这只发生在某些文件中。我已经隔离了一些,并尝试在这些坏文件的新副本上单独运行我的程序,它们会导致错误。但大多数文件都很好:) 我意识到有一个机会,我可能确实会被给予腐败的文件开始,所以我想一种方法,以确定,在试图解析它

我得到了一个目录目录,每个目录都包含一组我必须解析的.sqlite和.sqback文件

问题是,我认为当我收到这些文件时,其中一些文件已损坏,因为我收到了错误: 错误:[SQLITE\u损坏]数据库磁盘映像格式不正确(数据库磁盘映像格式不正确) 在我的控制台上,当我尝试处理它们时。这只发生在某些文件中。我已经隔离了一些,并尝试在这些坏文件的新副本上单独运行我的程序,它们会导致错误。但大多数文件都很好:)

我意识到有一个机会,我可能确实会被给予腐败的文件开始,所以我想一种方法,以确定,在试图解析它们之前,哪些文件是好的,哪些不是

我在用Java写东西。我只对sqlite和sqback验证感兴趣,因为我知道我的解析器可以工作。我正在重用以前项目中的它

暗示?建议?答案


非常感谢您的知识传授

像正常的SQL查询一样运行
PRAGMA quick\u check
。结果与包含字符串的单列表相同;对于一个完整的数据库,您会得到一行“ok”,对于一个损坏的数据库,会收到一堆错误消息

sqlite> pragma quick_check;
ok
更改文件中的某些字节后:

sqlite> pragma quick_check;
*** in database main ***
Page 64: btreeInitPage() returns error code 11
On tree page 40 cell 23: Child page depth differs
On tree page 40 cell 24: Child page depth differs

这不能保证会发现错误。

我会并且确实使用它

pragma integrity_check
这个pragma对整个数据库进行完整性检查。这个 完整性检查pragma查找无序记录、缺失页面、, 格式错误的记录、缺少索引项以及唯一、检查和不检查 空约束错误。如果完整性检查pragma发现问题, 返回字符串(作为多行,每行一列) 其中描述了问题。Pragma完整性检查将在 在分析结束之前,大多数错误为N,其中N默认为100。如果 pragma integrity_check未发现任何错误,一行的值为 返回“ok”。()

为什么这比布拉格快速检查更好

pragma类似于完整性检查,只是它不验证唯一约束,也不验证索引内容是否与表内容匹配。()


换句话说,
pragma integrity\u check
更彻底。

我可能回答了也可能没有回答我自己的问题:不幸的是,这并没有像我希望的那样真正帮助我。我不确定我是否知道如何使用它。我还是很想听听你的想法!是的,很抱歉没有详细说明。我不太清楚如何使用PRAGMA快速检查。具体地说,如何使用它,以获得一个值,该值允许我确定数据库是否损坏。一旦我得到了一个值,我该拿什么来比较它呢?谢谢。非常感谢你,CL。这很有魅力。我刚刚将其集成到我的java代码中,我很乐意!!!!请注意,在继续使用之前,确实不能保证会/不会发现错误。