C# 从Windows应用商店应用导出Sqlite数据库

C# 从Windows应用商店应用导出Sqlite数据库,c#,sqlite,windows-store-apps,filepicker,C#,Sqlite,Windows Store Apps,Filepicker,我有一个Sqlite数据库,我在Windows应用商店应用程序中填充它。现在我想说的是,在重新安装应用程序时数据库可用,因此,如果我是对的,我必须将其作为文件添加到我的项目中 现在,我尝试使用PickSaveFileAsync()方法导出数据库文件。不幸的是,一旦我拿到文件,我真的不知道该怎么做。以下是到目前为止我得到的信息: private async void exportDB_Click(object sender, RoutedEventArgs e) {

我有一个Sqlite数据库,我在Windows应用商店应用程序中填充它。现在我想说的是,在重新安装应用程序时数据库可用,因此,如果我是对的,我必须将其作为文件添加到我的项目中

现在,我尝试使用PickSaveFileAsync()方法导出数据库文件。不幸的是,一旦我拿到文件,我真的不知道该怎么做。以下是到目前为止我得到的信息:

    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?
        }
    }

我很难弄清楚你到底想达到什么目的

查看代码,您似乎希望将数据库文件复制到用户定义的位置。为此,只需在
if
块中添加以下代码:

using (var srcStream = await database.OpenStreamForReadAsync())
{
    using (var destStream = await file.OpenStreamForWriteAsync())
    {
        await srcStream.CopyToAsync(destStream);
    }
}
在阅读介绍性文本时,您似乎试图将该文件包含在应用程序中。在这种情况下,您确实应该将其作为
内容添加到项目中。然后,您可以通过以下代码访问它:

var dbFile = Package.Current.InstalledLocation.GetFileAsync(@"db\Hashes.db");
如果您不知道,可以在以下目录中的
LocalFolder
中找到文件:

C:\Users\Username\AppData\Local\Packages\PackageName\LocalState

用户不应该在更新或重新安装之间导出和导入应用程序数据库,你不这样认为吗?你有其他用户友好的选择吗?这个应用程序将有一个最终用户和一个管理版本,数据库导出将只适用于后一个。非常感谢,这确实正是我想要的。我也不知道我能在app文件夹中找到数据库文件,这也会派上用场的!