2013-03-09 87 views
0

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

现在我试图使用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? 
     } 
    } 
+0

用户不应该出口和因此,在更新或重新安装之间导入应用程序数据库你不觉得吗?你有其他的用户友好的选择吗? – letiagoalves 2013-03-09 13:30:36

+0

这个应用程序会有一个最终用户和一个管理员版本,数据库导出将只适用于后者。 – Thomas 2013-03-11 17:00:04

回答

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 
+0

非常感谢,这确实是我正在寻找的东西。 我也不知道我可以在应用程序文件夹中找到数据库文件,这也将派上用场! – Thomas 2013-03-11 17:04:24