5

我正在使用事务将多行插入表中。但是,我仍然看到在 SD 卡上创建临时 sqlite-journal 文件以及 sqlite 表。

如何禁用日志文件的创建?

谢谢

4

4 回答 4

9

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

pragma journal_mode=memory;

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

我建议您阅读以下内容以更好地了解正在发生的事情:

http://www.sqlite.org/pragma.html#pragma_journal_mode

于 2012-04-06T17:15:43.327 回答
5

日志是运行事务时使用的内部 SQLite 文件(以确保回滚)。你不能禁用它,你也不想这样做。

于 2012-04-06T17:14:12.923 回答
1

请注意,该声明PRAGMA journal_mode=OFF或对PRAGMA journal_mode=memory每个交易基础有效。您需要为每笔交易设置它。

于 2018-01-08T03:43:10.687 回答
-1

您可以使用以下代码删除日志文件

@Override
public void onOpen(SQLiteDatabase db) {         
    Cursor cc = db.rawQuery("PRAGMA journal_mode=DELETE",null);
    Log.i(TAG,"--- cursor count " + cc.getCount());     
    super.onOpen(db);        
}

您需要使用光标。游标是一个接口,提供对数据库查询返回的结果集的随机读写访问。如果您使用光标,日志文件将被删除。

于 2015-02-23T06:34:19.330 回答