我有一个Sqlite数据库,我填充在Windows应用商店应用中。现在我想在重新安装应用程序时可以使用数据库,因此我必须将它作为文件添加到我的项目中,如果我是对的。
现在我正在尝试使用PickSaveFileAsync() - Method导出数据库文件。不幸的是,一旦我拿到文件,我真的不知道怎么回事。这是我到目前为止所得到的:
private async void exportDB_Click(object sender, RoutedEventArgs e)
{
StorageFile database = await ApplicationData.Current.LocalFolder.GetFileAsync("Hashes.db");
var picker = new FileSavePicker();
picker.FileTypeChoices.Add("Database File", new string[] { ".db" });
picker.CommitButtonText = "Save DB";
picker.SuggestedFileName = "Database";
StorageFile file = await picker.PickSaveFileAsync();
if (file != null)
{
// What to do here?
}
}
答案 0 :(得分:2)
我很难弄清楚你到底想要达到的目标。
查看代码,您似乎希望将数据库文件复制到用户定义的位置。要执行此操作,只需在if
块中添加以下代码:
using (var srcStream = await database.OpenStreamForReadAsync())
{
using (var destStream = await file.OpenStreamForWriteAsync())
{
await srcStream.CopyToAsync(destStream);
}
}
阅读介绍性文本,您似乎正在尝试将该文件包含在您的应用程序中。在这种情况下,您确实应该将Content
添加到项目中。然后,您可以按如下方式从代码访问它:
var dbFile = Package.Current.InstalledLocation.GetFileAsync(@"db\Hashes.db");
如果您不知道,可以在以下目录的LocalFolder
中找到这些文件:
C:\Users\Username\AppData\Local\Packages\PackageName\LocalState