sql >> Databasteknik >  >> RDS >> SQLite

Hur man återställer Sqlite-databas efter säkerhetskopiering av Android

Detta är kärnkoden för en fungerande DB-återställning (från if (dbfile .. i ett 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();

De största skillnaderna är att jag tar bort DB-filen och använder skrivningar snarare än överföringar. Senare och efter en lyckad återställning använder jag också följande för att starta om appen (kan vara överdrivet men det fungerar för mig) eftersom du kan få oförutsägbara resultat (jag tror att delar av den ursprungliga databasen kan nås från minne/cachad data):-

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


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



  1. Hur man skapar vy i oracle

  2. Skrivskyddad routing för en alltid på

  3. Så här kontrollerar du om en tabell redan finns innan du skapar den i MySQL

  4. hibernate kunde inte hämta nästa sekvensvärde