2013-03-09 59 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