Подтвердить что ты не робот

Резервное копирование/восстановление sqlite db в android

Возможный дубликат:
Резервное копирование/восстановление Android: как создать резервную копию внутренней базы данных?

Я разрабатываю приложение, в котором есть SQL Lite db. Мне нужно предоставить пользователю возможность резервного копирования базы данных и восстановления ее снова. Как я могу это сделать? Пример кода?

И в случае, если мой пользователь сохранит db, а затем обновит приложение до нового кода версии DB, восстановит работу? Как мне это сделать?

Пожалуйста, помогите

4b9b3361

Ответ 1

В папке "/data/data/'your.app.package'/databases/" у вас есть .db файл, который является вашей базой данных. Вы можете скопировать этот файл, сохранить его и снова поместить обратно.

Один пример резервного копирования базы данных во внешнее хранилище:

    final String inFileName = "/data/data/<your.app.package>/databases/foo.db";
    File dbFile = new File(inFileName);
    FileInputStream fis = new FileInputStream(dbFile);

    String outFileName = Environment.getExternalStorageDirectory()+"/database_copy.db";

    // Open the empty db as the output stream
    OutputStream output = new FileOutputStream(outFileName);

    // Transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = fis.read(buffer))>0){
        output.write(buffer, 0, length);
    }

    // Close the streams
    output.flush();
    output.close();
    fis.close();

Ответ 2

Можете ли вы пояснить, что вы подразумеваете под "резервным копированием"? SQLite не имеет конкретного метода резервного копирования; вам нужно прочитать строки из db и сохранить их как-то. Многие разработчики используют XML для этого.

Если пользователь сохраняет db, а затем переходит к новому коду версии DB, вам нужно решить, как вы будете выполнять восстановление. Опять же, вам нужно выполнить работу, чтобы прочитать резервную копию и вернуть ее в базу данных; ни SQLite, ни Android не делают этого для вас.

В пакете android.app.backup содержатся классы для работы с агентом резервного копирования Android, но они реализуют общую структуру. Это зависит от вас, чтобы реализовать специфику каждого файла или базы данных, которую вы создаете резервную копию.