当使用SQLite数据库在Android中创建一个数据库时,会显示两个数据库

时间:2013-11-13 06:30:26

标签: android eclipse android-sqlite

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

2 个答案:

答案 0 :(得分:1)

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

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

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

该期刊通常分别在交易的开始和结束时创建和销毁。但此规则有例外。

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

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

   PRAGMA locking_mode=EXCLUSIVE;

有关详细信息Check

答案 1 :(得分:0)

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

pragma journal_mode=memory;

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

信誉来到这里:How to disable Android SQLite Journal file?