SQLite数据库副本在由设备而非仿真器生成时出现损坏

时间:2011-09-11 00:13:29

标签: android database sqlite copy corruption

首先,我要感谢所有读到此内容的人。 Stackoverflow是一个了不起的网站,你们每天都会以已提交的问题的形式帮助我解决问题。你们都摇滚!

我的问题:

我正在开发一个数据库应用程序,我想在certian点备份数据库,这样我就可以在开发过程中保存我在数据库中收集的数据。因此,为了将数据库保存到可访问的内存,我已经按照以下页面进行了操作:

How can I pull databases off my android onto my desktop?

..以上代码在模拟器中运行良好(我可以使用DDMS将数据库的副本拉到我的PC并使用SQLite数据库浏览器查看)。但是,当我在实际设备上运行它时,SQLite数据库浏览器无法读取它。为了推断,副本在SD卡上创建得很好,但是当我从我的设备复制到我的PC并查看它时,我什么也得不到,SDB无法理解它或什么。但是,当我使用模拟器时,我可以使用DDMS将其复制并使用SDB查看所有表格。

使用WinMerge比较两个原始数据库文件(一个由设备生成,一个由模拟器生成的两个都运行相同的代码)我可以看到有格式差异,但没有看起来已损坏,但我不是100肯定的。 android元数据和SQL序列表似乎在那里(虽然顺序不同),以及我的自定义表。

你们对如何调试这个有什么建议吗?我不知道从哪里开始,因为它似乎在模拟器上完美运行。另外,我在与设备相同的Android版本(2.3.3)上运行模拟器,所以我非常确定他们使用相同的SQLite引擎。

谢谢, 马特

1 个答案:

答案 0 :(得分:1)

我尝试使用不同的SQLite clients打开此数据库。

如果这不起作用,下一步可能是尝试查找SQLite database file验证器和/或以调试模式运行标准SQLite客户端(但说实话,我甚至不知道如果这两个最后的选择是可能的)。