sql >> データベース >  >> RDS >> SQLite

Androidのバックアップ後にSqliteデータベースを復元する方法

    これは、動作中のDB復元のコアコードです(if (dbfileから) ..try

                private static final int BUFFERSZ = 32768;
                private byte[] buffer = new byte[BUFFERSZ];
                ........
                dbfile = new File(currentdbfilename);
                .......
                if (dbfile.delete()) {
                    origdeleted = true;
                }
    
                FileInputStream bkp = new FileInputStream(backupfilename);
                OutputStream restore = new FileOutputStream(currentdbfilename);
                copylength = 0;
                while ((copylength = bkp.read(buffer)) > 0) {
                    restore.write(buffer, 0, copylength);
                }
                restore.flush();
                restore.close();
                restoredone = true;
                bkp.close();
    

    主な違いは、DBファイルを削除し、転送ではなく書き込みを使用することです。後で復元が成功したら、次の方法を使用してアプリを再起動します(やり過ぎかもしれませんが、私にとってはうまくいきます)。予測できない結果が得られる可能性があります(元のデータベースの一部はメモリ/キャッシュデータからアクセスされる可能性があります):-

        Intent i = getBaseContext().getPackageManager()
                                                .getLaunchIntentForPackage( getBaseContext().getPackageName() );
    
    
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        finish();
        startActivity(i);
        System.exit(0);
    



    1. 関数からレコードのセット(仮想テーブル)を返します

    2. PostgreSQLのトレンド:エンタープライズで最も人気のあるクラウドプロバイダー、言語、VACUUM、クエリ管理戦略、導入タイプ

    3. SQLServerデータベースの複数のテーブルの列にデフォルトの制約を追加するスクリプトを生成する方法-SQLServer/TSQLチュートリアルパート94

    4. PostgreSQLの入出力(I / O)操作の調整