- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在为我的 Android 应用程序的数据库开发一个 BackupHelper。 Context.databaseList()
方法报告属于我的应用程序的所有数据库的名称。但是除了主要的 SQLite 数据库文件(例如)之外,我确实遇到了很多其他文件:
所有 Android 文档都讲述了每个数据库只有一个数据库文件,但此信息似乎已过时。
是否使用 BackupHelper 保存所有这些文件?
恢复后,SQLite 能否在所有 Android 平台上使用这些文件?
非常感谢。
最佳答案
做了一些谷歌搜索并找到了一些关于其他文件的信息:
database.db-journal
默认情况下,SQLite 在事务开始时创建日志文件,这是一件好事。通常它会在提交时删除文件。
您可以通过 PRAGMA sql 命令更改此行为以简单地截断文件(无需创建/删除)或将其归零。您的 SQLite 版本可能不支持所有选项。
PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | OFF
写入操作通常在您提交之前不会完成,这是通过截断、删除或使日志无效来实现的。
如果这种行为是新的,我无法解释为什么它可能会发生变化,除了可能是 SQLite 的升级改变了默认行为,或者通过不为每个事务重新打开日志而变得更加复杂。
database.db-shm database.db-wal
这些是由 SQLite 创建的临时文件。如果您手动删除主数据库,您也应该删除它们。据我所知,WAL 是回滚日志的替代品,它使 SQLite 能够在事务失败时回滚更改。 SQLite 如何使用它们以及为什么将它们保留这么久取决于 SQLite 的作者,但总的来说 SQLite 看起来非常坚如磐石,所以我不会太担心它们。有关详细信息,请查看此处:
http://www.sqlite.org/fileformat2.html#walindexformat
这些文件是 SQLite 3.7 的新特性。
希望对您有所帮助...
关于android - 如何处理 BackupHelper 和 SQLites 附加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441906/
我目前正在为我的 Android 应用程序的数据库开发一个 BackupHelper。 Context.databaseList() 方法报告属于我的应用程序的所有数据库的名称。但是除了主要的 SQL
我是一名优秀的程序员,十分优秀!