首页 > 解决方案 > 在客户端维护数据库

问题描述

客户端:我有一个桌面应用程序。该应用程序还有一个 Sqlite 文件。我在客户端机器上使用 WIX 工具集安装了它。当我在应用程序中输入一些数据时,它会保存在数据库文件中。

服务器端:我对我的应用程序进行了一些更改,例如在数据库文件中的表中添加一个额外的列。

我进一步从服务器端安装了新版本的应用程序。

问题:一旦我从客户端打开我的 sqlite 文件,我以前的所有数据都会丢失。我得到的只是一张空白桌子。

问题:安装升级版应用程序后,是否可以保留数据库中存储的先前数据以及新的更改?

标签: c#visual-studiosqlitewixwix3

解决方案


这是 MSI 的一个常见问题,它通常使用 XML 文件来表达自己,但它是同一回事。

MSI 可以覆盖或不覆盖文件,无论哪种方式都是错误的。您希望架构更改,但您不想丢失用户数据,并且对于 MSI,该文件是原子的。

最好的办法是使用 MSI 安装的文件作为种子/模型,在应用程序运行时将其克隆到另一个目录并将用户数据存储在那里。在随后的登录中,检查种子数据库的架构更改并以此为基础以编程方式迁移克隆的数据库。


推荐阅读