我目前正在为我的安卓应用程序的数据库开发一个BackupHelper。Context.databaseList()方法报告了属于我的应用程序的所有数据库的名称。但是,除了主SQLite数据库文件(例如)之外,我还经历了许多其他文件:
所有的Android文档都告诉每个数据库一个数据库文件,但是这些信息似乎已经过时了。
是否保存所有这些文件与BackupHelper?
恢复后,SQLite会在所有安卓平台上处理这些文件吗?
在此之前,非常感谢您。
发布于 2012-11-18 16:29:15
做了一些谷歌搜索,找到了一些关于其他文件的信息:
database.db-journal
默认情况下,SQLite在事务开始时创建日志文件,这是一件好事。通常,它在提交时删除该文件。
您可以通过PRAGMA命令将此行为更改为简单地截断文件(不需要创建/删除)或对其进行零设置。并非所有选项都可能在您的SQLite版本中得到支持。
PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | OFF在提交之前,通常不会完成写操作,而提交是通过截断、删除或使日志无效来实现的。
如果这种行为是新的,我无法解释为什么它会改变,除了SQLite的升级更改了默认行为,或者因为没有为每个事务重新打开日志而变得更加复杂。
数据库.wal shm数据库
这些是SQLite创建的临时文件。如果您正在手动删除主数据库,您可能也应该删除这些。根据我可以收集到的信息,WAL是回滚日志的替代品,它使SQLite能够在事务失败时进行回滚更改。SQLite是如何使用它们的,以及为什么它们被保存这么长时间取决于SQLite的作者,但是总的来说,SQLite看起来非常坚固,所以我不会太担心它们。欲了解更多信息,请在这里查看:
http://www.sqlite.org/fileformat2.html#walindexformat
这些文件是SQLite 3.7的一个新特性。
希望能帮上忙..。
https://stackoverflow.com/questions/13441906
复制相似问题