首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理BackupHelper和SQLites附加文件

如何处理BackupHelper和SQLites附加文件
EN

Stack Overflow用户
提问于 2012-11-18 16:15:04
回答 1查看 913关注 0票数 2

我目前正在为我的安卓应用程序的数据库开发一个BackupHelper。Context.databaseList()方法报告了属于我的应用程序的所有数据库的名称。但是,除了主SQLite数据库文件(例如)之外,我还经历了许多其他文件:

  • database.db
  • database.db-journal
  • database.db-shm
  • database.db-wal

所有的Android文档都告诉每个数据库一个数据库文件,但是这些信息似乎已经过时了。

是否保存所有这些文件与BackupHelper?

恢复后,SQLite会在所有安卓平台上处理这些文件吗?

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 16:29:15

做了一些谷歌搜索,找到了一些关于其他文件的信息:

database.db-journal

默认情况下,SQLite在事务开始时创建日志文件,这是一件好事。通常,它在提交时删除该文件。

您可以通过PRAGMA命令将此行为更改为简单地截断文件(不需要创建/删除)或对其进行零设置。并非所有选项都可能在您的SQLite版本中得到支持。

代码语言:javascript
复制
PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | OFF

在提交之前,通常不会完成写操作,而提交是通过截断、删除或使日志无效来实现的。

如果这种行为是新的,我无法解释为什么它会改变,除了SQLite的升级更改了默认行为,或者因为没有为每个事务重新打开日志而变得更加复杂。

Source

数据库.wal shm数据库

这些是SQLite创建的临时文件。如果您正在手动删除主数据库,您可能也应该删除这些。根据我可以收集到的信息,WAL是回滚日志的替代品,它使SQLite能够在事务失败时进行回滚更改。SQLite是如何使用它们的,以及为什么它们被保存这么长时间取决于SQLite的作者,但是总的来说,SQLite看起来非常坚固,所以我不会太担心它们。欲了解更多信息,请在这里查看:

http://www.sqlite.org/fileformat2.html#walindexformat

这些文件是SQLite 3.7的一个新特性。

Source

希望能帮上忙..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13441906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档