/// <summary> /// データベース初期化 /// </summary> /// <param name="mono">呼び出し元インスタンス</param> public static void Init(MonoBehaviour mono, MyDatabaseListener listener) { MyDatabase db = MyDatabase.Instance; db.mListener = listener; mono.StartCoroutine(GetNewDbVersion(DB_VERSION_FILE_NAME)); }
/// <summary> /// 最新のDBバージョン取得完了通知 /// </summary> /// <param name="newDbVersion">最新のDBバージョン</param> private void OnGetNewDbVersion(int newDbVersion) { Debug.Log("MyDatabase start"); // DB更新フラグ bool isDbUpdate = false; // DBバージョン更新フラグ bool isDbVersionUpdate = false; // DBバージョン int oldDbVersion = UserData.DatabaseVersion; // DB保存先パス string dbPath = System.IO.Path.Combine(Application.persistentDataPath, DB_NAME); // DB更新確認 checkDbUpdate(dbPath, oldDbVersion, newDbVersion, ref isDbUpdate, ref isDbVersionUpdate); if (isDbUpdate) { Debug.Log("MyDatabase create backup data"); // DBファイルの更新が必要な場合、古いDBファイルを別名で保存する string backupPath = System.IO.Path.Combine(Application.persistentDataPath, BACKUP_DB_NAME); System.IO.File.Copy(dbPath, backupPath, true); } // DBを読み込む mDb = new SqliteDatabase(DB_NAME, isDbUpdate || isDbVersionUpdate); // テーブルを生成する CreateDbTables(); if (isDbUpdate) { Debug.Log("MyDatabase marge backup data"); // 更新フラグが立っている時、古いDBから必要なデータを新しいDBに移行する SqliteDatabase backupDb = new SqliteDatabase(BACKUP_DB_NAME, false); // 各テーブルごとにマージ処理を行なう MargeData(ref backupDb); } if (isDbVersionUpdate) { Debug.Log("MyDatabase update db version " + oldDbVersion + " > " + newDbVersion); // DBバージョンを更新する UserData.DatabaseVersion = newDbVersion; UserData.Save(); } Debug.Log("MyDatabase end"); // 初期化完了通知 mListener.OnDatabaseInit(); mListener = null; }