热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用SQLite的Windows窗体应用程序文件?-HowtouseSQLiteforwindowsformsapplicationfile?

ImwritinganewWindowsForms2.0application.Thisapplicationisgoingtohaveadatafile.The

I'm writing a new Windows Forms 2.0 application. This application is going to have a data file. The user will be able to open the data file, do some work and save it to disk. Then he'll be able to open it later, to continue working. Same thing as Microsoft Word and .doc files.

我正在编写一个新的Windows Forms 2.0应用程序。该应用程序将具有数据文件。用户可以打开数据文件,做一些工作并将其保存到磁盘。然后他就可以打开它,继续工作。与Microsoft Word和.doc文件相同。

I'd like to use SQLite for the data file. However, I don't want changes to be written immediately to the data file. I want the user to change the data, but the file on disk remaining unchanged. Only when the user clicks "save" the data file on disk will be changed.

我想使用SQLite作为数据文件。但是,我不希望将更改立即写入数据文件。我希望用户更改数据,但磁盘上的文件保持不变。只有当用户单击“保存”时,才会更改磁盘上的数据文件。

In your opinion, what's the best way to do this?

在您看来,最好的方法是什么?

Should I load the contents of the SQLite DB into memory, maybe mapping it to objects, and write back to it when the user clicks "save"?

我应该将SQLite DB的内容加载到内存中,也可以将其映射到对象,并在用户单击“保存”时写回?

Or... is there a way to work with the data file with SQL commands (no objects), but leaving the changes in memory only, until "save" is clicked?

或者......有没有办法使用SQL命令(没有对象)处理数据文件,但只将更改保留在内存中,直到单击“保存”?

I'm a bit confused, I'd appreciate any idea regarding a best practice for this.

我有点困惑,我很欣赏任何关于最佳实践的想法。

Cheers

4 个解决方案

#1


1) On startup, make a temporary copy of the Sqlite file. This will be your "working file".

1)在启动时,制作Sqlite文件的临时副本。这将是你的“工作档案”。

2) Run all the INSERTs/UPDATEs/DELETEs against working file. When the user clicks "Save", copy the working file over the original.

2)针对工作文件运行所有INSERT / UPDATE / DELETE。当用户单击“保存”时,将工作文件复制到原始文件上。

3) Delete the working file and goto step #1.

3)删除工作文件并转到步骤#1。

#2


Depending on your scenario, you can also wrap your SQL in a transaction (BEGIN TRANSACTION;), and when the user click save, commit the transaction; if user click cancel, rollback the transaction.

根据您的方案,您还可以将SQL包装在事务中(BEGIN TRANSACTION;),当用户单击“保存”时,提交事务;如果用户单击取消,则回滚事务。

#3


Load the data when the user enters the edit-form. If he clicks save then Update/Insert. If not then just close the Form without any database action.

在用户输入编辑表单时加载数据。如果他单击保存,则单击更新/插入。如果没有,则只关闭表单而不进行任何数据库操作。

#4


Temp files.

Use XML or some other easy to parse format, save the data to a temp file on disk. When user saves the file, dump that date into your db.

使用XML或其他一些易于解析的格式,将数据保存到磁盘上的临时文件中。用户保存文件时,将该日期转储到数据库中。

This gives you the save-when-user-hits-save feature plus some redundancy if the machine dies or program crashes.

如果机器死机或程序崩溃,这将为您提供“用户点击时保存”功能以及一些冗余。


推荐阅读
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
author-avatar
gerardlong
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有