我正在编写一个新的Windows Forms 2.0应用程序。这个应用程序将有一个数据文件。用户可以打开数据文件,做一些工作并将其保存到磁盘。然后他就可以打开它,继续工作。与Microsoft Word和.doc文件相同。
我想将SQLite用于数据文件。但是,我不希望将更改立即写入数据文件。我希望用户更改数据,但磁盘上的文件保持不变。 仅当用户点击“保存”时,才会更改磁盘上的数据文件。
在您看来,最好的方法是什么?
我应该将SQLite数据库的内容加载到内存中,也可以将其映射到对象,并在用户点击“保存”时回写它?
或者......有没有办法使用SQL命令(没有对象)处理数据文件,但只保留内存中的更改,直到单击“保存”?
我有点困惑,我很欣赏任何关于最佳实践的想法。
干杯
答案 0 :(得分:2)
1)启动时,制作Sqlite文件的临时副本。这将是你的“工作档案”。
2)针对工作文件运行所有INSERT / UPDATE / DELETE。当用户单击“保存”时,将工作文件复制到原始文件上。
3)删除工作文件并转到步骤#1。
答案 1 :(得分:1)
根据您的方案,您还可以将SQL包装在事务中(BEGIN TRANSACTION;),当用户单击“保存”时,提交事务;如果用户单击取消,则回滚事务。
答案 2 :(得分:0)
当用户输入编辑表单时加载数据。如果他单击保存,则单击更新/插入。如果没有,那么只需关闭表单而不进行任何数据库操作。
答案 3 :(得分:0)
临时文件。
使用XML或其他易于解析的格式,将数据保存到磁盘上的临时文件中。用户保存文件时,将该日期转储到数据库中。
如果机器死机或程序崩溃,这将为您提供“用户点击时保存”功能以及一些冗余功能。