Как использовать SQLite для файла приложения Windows Forms? - PullRequest
0 голосов
/ 29 января 2009

Я пишу новое приложение для Windows Forms 2.0. Это приложение будет иметь файл данных. Пользователь сможет открыть файл данных, выполнить некоторую работу и сохранить его на диск. Тогда он сможет открыть его позже, чтобы продолжить работу. То же самое, что файлы Microsoft Word и .doc.

Я хотел бы использовать SQLite для файла данных. Однако я не хочу, чтобы изменения были немедленно записаны в файл данных. Я хочу, чтобы пользователь изменил данные, но файл на диске остался без изменений. Только когда пользователь нажимает «сохранить» файл данных на диске будет изменен.

Как вы думаете, как лучше всего это сделать?

Должен ли я загрузить содержимое базы данных SQLite в память, возможно, сопоставив ее с объектами, и записать обратно, когда пользователь нажмет «сохранить»?

Или ... есть ли способ работать с файлом данных с помощью команд SQL (без объектов), но оставить изменения только в памяти, пока не будет нажата кнопка «Сохранить»?

Я немного растерялся, я был бы признателен за любую идею относительно лучшей практики для этого.

Приветствия

Ответы [ 4 ]

2 голосов
/ 29 января 2009

1) При запуске создайте временную копию файла Sqlite. Это будет ваш «рабочий файл».

2) Запустите все INSERT / UPDATEs / DELETEs для рабочего файла. Когда пользователь нажимает «Сохранить», скопируйте рабочий файл поверх оригинала.

3) Удалите рабочий файл и перейдите к шагу № 1.

1 голос
/ 07 февраля 2009

В зависимости от вашего сценария вы также можете заключить ваш SQL в транзакцию (BEGIN TRANSACTION;), и когда пользователь нажмет сохранить, подтвердите транзакцию; если пользователь нажал кнопку «Отмена», откат транзакции.

0 голосов
/ 29 января 2009

Временные файлы.

Используйте XML или другой простой для анализа формат, сохраняйте данные во временном файле на диске. Когда пользователь сохранит файл, поместите эту дату в вашу базу данных.

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

0 голосов
/ 29 января 2009

Загрузка данных, когда пользователь вводит форму редактирования. Если он нажимает сохранить, то Обновить / Вставить. Если нет, просто закройте форму без каких-либо действий с базой данных.

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