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

时间:2013-03-09 00:38:21

标签: c# sqlite windows-store-apps filepicker

我有一个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?
        }
    }

1 个答案:

答案 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