Как реализовать одношаговую отмену изменений в БД SQLite? - PullRequest
8 голосов
/ 01 ноября 2010

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

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

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

Ответы [ 2 ]

3 голосов
/ 01 ноября 2010

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

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

1 голос
/ 31 марта 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...