【问题标题】:Export Sqlite database from Windows Store App从 Windows Store App 导出 Sqlite 数据库
【发布时间】:2013-03-09 00:38:21
【问题描述】:

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

【问题讨论】:

  • 用户不应该在更新或重新安装之间导出和导入应用程序数据库,你不觉得吗?您还有其他用户友好的选择吗?
  • 此应用将有最终用户和管理员版本,数据库导出仅适用于后者。

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


【解决方案1】:

我很难弄清楚你到底想要达到什么目标。

查看代码,您似乎想将数据库文件复制到用户定义的位置。为此,只需在 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

【讨论】:

  • 非常感谢,这确实正是我想要的。我也不知道我可以在app文件夹中找到数据库文件,这也会派上用场!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多