安装UWP应用程序后如何获取Sqlite数据?

时间:2017-09-12 10:23:54

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

我正在开发一个通用Windows平台 Application.In我使用 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文件时遇到异常

enter image description here

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

如何解决此问题。我需要进行任何其他修改吗?

1 个答案:

答案 0 :(得分:0)

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

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

确保将sqlite文件标记为Content并将其复制到输出目录。否则它们将不会被放置在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);