sql >> Databáze >  >> RDS >> SQLite

Jak obnovit databázi Sqlite po zálohování Androidu

Toto je základní kód funkční obnovy DB (z 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();

Hlavní rozdíly jsou v tom, že smažu soubor DB a používám spíše zápisy než přenosy. Později a po úspěšném obnovení také používám následující k restartování aplikace (může být přehnané, ale pro mě to funguje), protože můžete získat nepředvídatelné výsledky (myslím, že části původní databáze mohou být přístupné z paměti / dat v mezipaměti):-

    Intent i = getBaseContext().getPackageManager()
                                            .getLaunchIntentForPackage( getBaseContext().getPackageName() );


    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    finish();
    startActivity(i);
    System.exit(0);



  1. T-SQL dotaz pro zobrazení definice tabulky?

  2. Naučte se používat několik funkcí MySQL a MariaDB – část 2

  3. Optimistické vs. pesimistické zamykání

  4. Chyba MySQL 1170 (42000):Sloupec BLOB/TEXT použitý ve specifikaci klíče bez délky klíče