【发布时间】:2011-06-05 12:58:49
【问题描述】:
我的一些用户报告说他们无法正确打开使用 sqlite jdbc 或 sqlite 浏览器 (http://sourceforge.net/projects/sqlitebrowser/) 等其他工具在 Android 中创建的 sqlite 数据库。
这是一个有问题的示例数据库:
这个 sqlite db 是在 HTC Sensation 上创建的,运行 Android 2.3.3 和 Sense 3.0。
确切的问题是,如果您在文本编辑器中查看文件,您会看到正在创建的一堆表,但如果您尝试运行“select * from groups;”你会得到一个 SQLException: file is encrypted or is not a database。
我尝试过使用“select sqlite_version;”看看这是否是版本问题 - sqlite 浏览器显示 3.6.18。但是不同的工具给了我不同的版本号......不知道这是怎么回事。
我还应该指出,我的应用程序将数据库直接从设备 (/data/data/com.citc.wallet/databases/wallet.db) 复制到 Dropbox。
任何帮助将不胜感激。
【问题讨论】:
-
使用 SQLiteSpy 在我的 PC 上打开数据库对我来说很好。抱歉,我知道这对你没有真正的帮助,但我只是想提一下。
-
是的 - 我刚刚找到一两个工具,它也可以打开数据库。我最好的猜测是它对于 sqlite jdbc 来说太新了(zentus.com/sqlitejdbc)
-
一个想法可能是较新的数据库使用 WAL 模式。尝试使用正常工作的系统执行“PRAGMA journal_mode=delete”,然后重试访问。