0

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?
        }
    }
4

1 に答える 1

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
于 2013-03-09T10:05:21.647 に答える