Экспорт базы данных Sqlite из приложения Магазина Windows
У меня есть база данных Sqlite, которую я заполняю в приложении Магазина Windows. Теперь я хотел бы, чтобы указанная база данных была доступна при переустановке приложения, поэтому я должен добавить ее в свой проект в виде файла, если я прав.
Сейчас я пытаюсь экспортировать файл базы данных, используя метод 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?
}
}
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