Экспорт базы данных 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
Другие вопросы по тегам