【问题标题】:How to get Sqlite Data after installing UWP application?安装 UWP 应用程序后如何获取 Sqlite 数据?
【发布时间】:2017-09-12 10:23:53
【问题描述】:

我正在开发一个通用 Windows 平台应用程序。我使用 Sqlite 作为我的本地数据库。当我在侧面加载我的应用程序并安装它时,我能够获得 Sqlite DB 结构但无法获得数据。 安装侧载应用程序后如何获取 sqlite 数据库和数据

以下是我用于创建 Sqlite 的代码。

           if (!File.Exists(Path.Combine(ApplicationData.Current.LocalFolder.Path, "TestDB.sqlite")))
          {
            var sqlpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, " TestDB.sqlite");
            using (SQLiteConnection conn = new SQLiteConnection(new SQLitePlatformWinRT(), sqlpath))
            {
                conn.CreateTable<Test_TableName >();
            }
          }

根据其中一项建议,我修改了我的 sqlite 文件存储位置,如下所示

            Package currentPackage = Package.Current;

            StorageFolder AppstorageLocation = currentPackage.InstalledLocation;

            if (!File.Exists(Path.Combine(AppstorageLocation.Path, "TestDB.sqlite")))
            {
                // Creates Tables While Creating DataBase
                var sqlpath = Path.Combine(AppstorageLocation.Path, "TestDB.sqlite");

                using (SQLiteConnection conn = new SQLiteConnection(new SQLitePlatformWinRT(), sqlpath))
                {
                    conn.CreateTable<Test_TableName >();
                }
          }

但我在使用Package.Current.InstalledLocation.Path 创建 sqlite 文件时遇到了异常

由于使用Package.Current.InstalledLocation.Path 位置,我无法创建 Sqlite DB。

我该如何解决这个问题。我需要做任何其他修改吗?

【问题讨论】:

  • 您想在侧加载应用程序后获取 sqlite 数据吗?如果有,可以把sqlite放到Package.InstalledLocation目录下。
  • @JaydenGu-MSFT 是的,你是对的。我已经根据您的建议修改了我的问题。您能否检查我的问题并提供您的建议...
  • @JaydenGu-MSFT 我尝试将 sqlite 文件放在包位置的物理位置,以及侧面加载的文件夹仍然没有得到 sqlite 文件。

标签: c# sqlite xaml win-universal-app uwp-xaml


【解决方案1】:

如果您想在安装我的侧载应用程序后获取sqlite数据库以及数据,您应该可以将文件存储在Package.InstalledLocation中。

由于安装位置是只读的,我们应该可以手动将TestDB.sqlite 文件复制到项目中的Assets 文件夹中。

确保 sqlite 文件被标记为内容并被复制到输出目录。否则它们将不会被放入 appxpackage 并在运行时可用。

第一次启动应用时,我们可以从Package.InstalledLocation获取sqlite文件,然后我们可以将它复制到LocalFolder。我们可以在LocalFolder中添加数据和删除数据。

例如:

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/TestDB.sqlite"));
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
await file.CopyAsync(localFolder);

【讨论】:

  • 我已将 sqlite 文件放在 Package.InstalledLocation 中并侧面加载了应用程序。并将 sqlite 文件放在输出目录中,我仍然无法获取 sqlite 数据。
  • 您提到我们需要将 sqlite 文件标记为内容。您能解释一下我该怎么做吗?
  • Solution Explorer 中选择 sqlite 文件,然后将 Build Action 设置为 ContentCopy to Output Directory 始终复制Properties 中。
猜你喜欢
  • 2019-06-25
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
相关资源
最近更新 更多