【问题标题】:Maintaining database at client side在客户端维护数据库
【发布时间】:2019-04-22 13:00:43
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# visual-studio sqlite wix wix3


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我同意。我们一直重复这个建议。将数据库放在用户配置文件中的某个位置?我更喜欢网络共享,或者与在线数据库(云)的真正连接。一切都取决于您可以使用什么。您的应用程序应在启动时更新数据库方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多