SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Kamar cara terbaik untuk membuat cadangan untuk aplikasi offline?

Ada sedikit kebutuhan untuk melakukan sesuatu yang rumit, cukup simpan file SQLiteDatabase.

Pada dasarnya tutup Room db lalu simpan file.

misalnya berikut ini adalah contoh yang sangat sederhana yang menyimpan ke direktori unduhan di sub-direktori bernama DBsaves :-

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    resetSequenceAction();
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        verifyStoragePermissions(this);
    }
}

@Override
protected void onStart() {
    super.onStart();
    mTestDB = Room.databaseBuilder(this,TestDatabase.class,TestDatabase.DBNAME).build();
    addSomeData();
    addSomeData();
    addSomeData();
    addSomeData();
    mTestDB.close();
    File dbfile = this.getDatabasePath(TestDatabase.DBNAME);
    File sdir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"DBsaves");
    String sfpath = sdir.getPath() + File.separator + "DBsave" + String.valueOf(System.currentTimeMillis());
    if (!sdir.exists()) {
        sdir.mkdirs();
    }
    File savefile = new File(sfpath);
    try {
        savefile.createNewFile();
        int buffersize = 8 * 1024;
        byte[] buffer = new byte[buffersize];
        int bytes_read = buffersize;
        OutputStream savedb = new FileOutputStream(sfpath);
        InputStream indb = new FileInputStream(dbfile);
        while ((bytes_read = indb.read(buffer,0,buffersize)) > 0) {
            savedb.write(buffer,0,bytes_read);
        }
        savedb.flush();
        indb.close();
        savedb.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}


public void verifyStoragePermissions(Activity activity) {

    final int REQUEST_EXTERNAL_STORAGE = 1;
    String[] PERMISSIONS_STORAGE = {

            //Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };

    int permission = ActivityCompat.checkSelfPermission(
            activity,
            Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if(permission != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }
}
  • Perhatikan bahwa metode onCreate dan verifikasiStoragePermissions hanya disertakan untuk mendapatkan izin menulis ke penyimpanan eksternal (perhatikan izin pengguna juga disetel dalam manifes).

    • Hal yang penting adalah melakukan ini di luar Ruangan (begitu juga jika Anda memulihkan dari cadangan).

Setelah dijalankan :-

Dan kemudian menyalin file ke PC dan membuka dengan SQLite Manager :-

Ini sepenuhnya seperti yang diharapkan dan seperti yang ditunjukkan sangat portabel yaitu Anda dapat memasukkannya ke alat SQLite apa pun (Versi SQLite yang digunakan oleh alat semacam itu mungkin menjadi faktor pembatas)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Tanggal Saat Ini di SQLite

  2. Android - SQLite - PILIH ANTARA Tanggal1 DAN Tanggal2

  3. SQLite Buat Tabel

  4. Fungsi &Operator JSON di SQLite (Daftar Lengkap)

  5. Tabel Perlihatkan SQLite