2010-11-01 2 views
8

Я пытаюсь адаптировать приложение из модели подтверждения к модели отмены. Для тех из вас, кто не знает, вы можете удалить что-то одним кликом, но если это была ошибка, вы можете отменить его так же легко, как и прерывать пользователя каждый раз, когда он или она хочет что-то сделать спросите раздражающие «Вы уверены, что хотите ...?» вопрос через диалог.Как реализовать однократную отмену изменений SQLite DB?

Мое приложение подкреплено БД Androidite SQL, и я хочу иметь возможность отменить ограниченный набор операций удаления и обновления. Кроме того, мне нужно только отменить одно последовательное изменение, и информация не должна прилипать к аркану очень долго.

Все, что я читал об отмене/повторении, говорит, чтобы использовать командную модель для хранения данных. Мой вопрос заключается в том, как сохранить изменения базы данных в облегченном восстановительном режиме?

+0

Я предполагаю, что вы хотите, чтобы изменения были видны другими запросами, даже если их еще можно отменить? –

+0

@ Space_C0wb0y Изменения должны быть сохранены и энергонезависимы, чтобы другие запросы могли их читать, но мне нужно полностью отменить последнюю транзакцию. – CodeFusionMobile

ответ

3

Идея шаблона команды заключается в том, что каждая команда знает, как ее можно отменить. Например, AddPersonCommand добавит новую запись в таблицу Persons-table в вашу базу данных. Чтобы отменить эту команду, вам придется удалить этого человека еще раз.

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

1

Вы также можете использовать библиотеку RestorableSQLiteDatabase, которая является оболочкой базы данных SQLiteDatabase android и автоматически генерирует восстановление SQL-запросов для отмены изменений с использованием имени тега.

Смежные вопросы