Xamarin.AndroidでSQliteの中身を確認する(Dropbox経由)
以前、エミュレーターからデータをとって、中身を確認していたが、Dropboxを経由するほうが、バージョン間の互換を気にしなくても利用できたため、ご紹介する。
※以下は、Clickイベントで処理されることを想定しているが、その処理は、デバグ時のみ利用できる想定である
理由としては、リリース時は、デバグ状態ではできないためで、ユーザへの影響がありえないと考えられるためである。
Dropboxへの保存処理
public async Task UploadSqliteDB(string path) { using (var dbx = new DropboxClient(HiddenData.accessTokenForDropbox)) { string dbFilePath = path; Console.WriteLine("アップロード:SQLite"); try { using (var data = new StreamReader(dbFilePath)) { var updated = await dbx.Files.UploadAsync( "/data"+DateTime.Now.ToString("yyyy_MM_dd")+".db3", WriteMode.Overwrite.Instance, body: data.BaseStream); Console.WriteLine("WriteLine:Upload"); Console.WriteLine("Saved " + dbFilePath); } } catch (Exception e) { Console.WriteLine("エラー:" + e); } Console.WriteLine("アップロード-END"); } }
Clickイベント
/// <summary> /// DBへのパスを取得する /// </summary> /// <returns></returns> public string GetPath() { return dbContext.DatabasePath; } private async void SaveSqliteDataOnClick(object sender, EventArgs e) { var dropboxControl = new dropBoxControl(); var context = Common.ConnectDB.GetDBContext(); await dropboxControl.UploadSqliteDB(context.GetPath()); }
※dropBoxControlは「public static SQLiteConnection dbContext;」を保存しているとする。