5

Вопрос по sqlite, android – Как отключить Android-журнал SQLite Journal?

Я использую транзакции для вставки нескольких строк в таблицу. Но я все еще вижу временный файл sqlite-journal, создаваемый на SD-карте вместе с таблицей sqlite.

Как отключить создание файла журнала?

Спасибо

Файл журнала создается базой данных sqlite, когда вы используете транзакции, чтобы убедиться, что если по какой-либо причине транзакция будет прервана внешними средствами, база данных не будет повреждена. Я бы оставил это в покое на вашем месте.

Apr 06, 2012, 5:10 PMот

@ Mr.Will Так почему же в Android ведется журнал, когда ничто не касается базы данных, когда это не является поведением по умолчанию в других системах?

Dec 02, 2015, 6:50 AMот

4ответа

5

Журнал - это внутренний файл SQLite, который используется при выполнении транзакций (для обеспечения отката). Вы не можете отключить его, и вы не хотите.

1

Пожалуйста, напомните, заявлениеPRAGMA journal_mode=OFF или жеPRAGMA journal_mode=memory действителен для каждой транзакции Вы должны установить его для каждой транзакции.

8

Вы можете сохранить журнал в памяти, чтобы не создавать файл -журнала:

pragma journal_mode=memory;

Обратите внимание, что вам нужно запускать это каждый раз, когда вы открываете базу данных.

Я рекомендую вам прочитать следующее, чтобы лучше понять, что происходит:

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

-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);        
}

Вам нужно использовать курсор. Курсор - это интерфейс, обеспечивающий произвольный доступ для чтения и записи к набору результатов, возвращаемому запросом базы данных. Файл журнала будет удален, если вы используете курсор.

RelatedQuestions