SQLite
 sql >> Datenbank >  >> RDS >> SQLite

So stellen Sie die Sqlite-Datenbank nach dem Backup von Android wieder her

Dies ist der Kerncode einer funktionierenden DB-Wiederherstellung (von if (dbfile .. in einem 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();

Die Hauptunterschiede bestehen darin, dass ich die DB-Datei lösche und Schreibvorgänge anstelle von Übertragungen verwende. Später und nach einer erfolgreichen Wiederherstellung verwende ich auch Folgendes, um die App neu zu starten (möglicherweise übertrieben, aber es funktioniert für mich), da Sie unvorhersehbare Ergebnisse erhalten können (ich denke, auf Teile der ursprünglichen Datenbank kann aus dem Speicher/gecachten Daten zugegriffen werden):-

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


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