Android SQLite - изменение journal_mode - PullRequest
4 голосов
/ 02 марта 2011

Я пытаюсь изменить journal_mode для моей базы данных с помощью кода.Я пробовал SQLiteDatabase.execSQL («PRAGMA journal_mode = OFF»), но это не удается, потому что выражение «PRAGMA journal_mode = OFF» возвращает результат (я это подтвердил из терминала), и поэтому Android считает, что это запрос, и жалуется, что явместо этого следует использовать execQuery.Но то, что я пытаюсь выполнить, не является запросом.

Я также попытался скомпилировать выражение pragma в SQLiteStatement и вызвал метод execute, но результат тот же.

Может кто-нибудь предложить какие-либо альтернативызаставить это работать через код?

Спасибо, Ранджит

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

Возможно, вы страдаете от этой проблемы, о которой говорят execSQL документы :

При использовании enableWriteAheadLogging (), journal_mode автоматически управляется этим классом.Поэтому не устанавливайте journal_mode с помощью оператора «PRAGMA journal_mode», если ваше приложение использует enableWriteAheadLogging ()

Убедитесь, что вы не используете запись с опережением записи, и тогда она может работать.

Обновление: как сказал Ранджит в комментариях, это должно работать:

Cursor c1 = db.rawQuery("PRAGMA journal_mode=OFF", null); 
c1.close();
0 голосов
/ 14 июля 2017

Это можно сделать с помощью следующей команды:

db.rawExecSQL("PRAGMA journal_mode=OFF;");

(Не нужно создавать Cursor, как это предлагается в одном из комментариев к ответ Роберта )

...