sql >> Database >  >> RDS >> SQLite

Hoe Sqlite-database te herstellen na een back-up van Android

Dit is de kerncode van een werkend DB-herstel (van if (dbfile .. in een 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 belangrijkste verschillen zijn dat ik het DB-bestand verwijder en schrijfbewerkingen gebruik in plaats van overdrachten. Later en bij een succesvol herstel gebruik ik ook het volgende om de app opnieuw te starten (misschien overdreven, maar het werkt voor mij) omdat je onvoorspelbare resultaten kunt krijgen (ik denk dat delen van de originele database toegankelijk zijn vanuit het geheugen / gegevens in de cache):-

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


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



  1. Typ conversie. Wat moet ik doen met een PostgreSQL OID-waarde in libpq in C?

  2. Hoe ORA-06512 op regelnummer op te lossen

  3. De meest efficiënte T-SQL-manier om een ​​varchar aan de linkerkant tot een bepaalde lengte op te vullen?

  4. Geavanceerde Oracle JDeveloper-functies gebruiken voor MySQL-databases