我正在开发一个通用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
由于使用Package.Current.InstalledLocation.Path
位置,我无法创建Sqlite DB。
如何解决此问题。我需要进行任何其他修改吗?
答案 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);