0

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

现在我正在尝试使用 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?
        }
    }
4

1 回答 1

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
于 2013-03-09T10:05:21.647 回答