【问题标题】:Populate SQLite only once upon installation of UWP app安装 UWP 应用后仅填充一次 SQLite
【发布时间】:2019-06-25 19:00:18
【问题描述】:

我正在使用 vs studio 2017 版本 15.9.6 开发 UWP 应用程序。 我想使用 Windows 本地 SQLite 数据库。我想在用户第一次安装应用程序时运行一个名为 mySql.txt 的 SQL 脚本。我不想每次用户运行应用程序时都运行它,因为它包含插入语句,这将导致重复行插入。所以我只想运行该脚本一次,最好是在安装时。

我该怎么做?我对 UWP 和 .NET 很陌生。如果可能,请逐步指导我。

【问题讨论】:

    标签: sqlite uwp


    【解决方案1】:

    您可以确保该应用只进行一次初始化/播种。为此,您可以使用ApplicationDate.Current.LocalSettings

    这些允许您为您的应用程序编写绑定到您的应用程序的简单数据。一旦用户卸载应用程序,这些数据也将被删除。这完全符合您的情况。

    假设您的数据库初始化代码在方法InitializeDb() 中。您可以使用以下方法确保初始化只完成一次:

    if (!ApplicationData.Current.LocalSettings.Values.ContainsKey("DbInitialized"))
    {
       InitializeDb();
       ApplicationData.Current.LocalSettings.Values["DbInitialized"] = true;
    }
    

    此代码首先检查我们之前是否已初始化数据库,如果没有,则执行初始化并将标志存储到应用设置中以确保下次跳过初始化。

    您可以在应用初始化期间运行此代码,例如在OnLaunched 方法中,或在首次需要数据库服务时运行。

    这当然是最简单的实现,所以你可以(并且应该)添加一些异常处理,这样如果初始化失败,可以重试等等。此外,您可能希望处理应用程序更新和数据库更新 - 在这种情况下,您可以使用 ApplicationData.Current.Version,它允许您跟踪应用程序数据的版本,也可以用于跟踪数据库版本,以便您可以在之间执行适当的迁移版本。

    最后,为了更好地方便用户,还有一种方法可以在更新期间执行应用更新步骤。请参阅this 文章了解更多信息。

    【讨论】:

    • 太好了,看起来像是解决了我的问题。我会尝试并相应地更新线程。
    • 你是对的,我现在已经修复了代码。抱歉,是凭记忆写的
    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2017-05-01
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多