Example #1
0
        /// <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));
        }
Example #2
0
        /// <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;
        }