-1

只是出于好奇才问这个问题!!我已经DB1在android上实现了一个数据库。但是当我在主要活动中调用方法时this.databaselist,我看到存在两个数据库,DB1并且DB-journal. 为什么android会自动创建第二个数据库?在处理多个数据库时,我们是否也需要处理这些期刊数据库?

4

2 回答 2

1

SQLite 使用临时文件的方式不被视为 SQLite 与应用程序签订的合同的一部分。

日志是用于在 SQLite 中实现原子提交和回滚功能的临时文件。日志始终与数据库文件位于同一目录中,并且与数据库文件具有相同的名称,但附加了 8 个字符“-journal”

日志通常在事务首次启动时创建,通常在事务提交或回滚时删除。日志文件对于实现 SQLite 的原子提交和回滚功能至关重要。如果没有日志,SQLite 将无法回滚不完整的事务,并且如果在事务中间发生崩溃或断电,则整个数据库可能会在没有回滚日志的情况下损坏。

日志通常分别在事务的开始和结束时创建和销毁。但这条规则也有例外。

如果在事务处理过程中发生崩溃或断电,则日志文件将保留在磁盘上。下次另一个应用程序尝试打开数据库文件时,它会注意到废弃的回滚日志(在这种情况下我们称之为“热日志”)的存在,并使用日志中的信息将数据库恢复到之前的状态不完整事务的开始。这就是 SQLite 实现原子提交的方式。

如果应用程序使用 pragma 将 SQLite 置于独占锁定模式:

   PRAGMA locking_mode=EXCLUSIVE;

更多详情请查看

于 2013-11-13T06:47:33.947 回答
0

您可以选择将日志保存在内存中,以便不创建 -journal 文件:

pragma journal_mode=memory;

请注意,每次打开数据库时都需要运行它。

信用在这里:如何禁用 Android SQLite 日志文件?

于 2013-11-13T06:37:48.230 回答