Резервное копирование базы данных SQLite в Android - PullRequest
0 голосов
/ 12 ноября 2018

Мне нужно сделать автономное резервное копирование базы данных SQLite во внутреннем хранилище мобильного телефона или на SD-карте. Но я не знаю, как это возможно.

Я следил за многими потоками здесь, на SO, но они предлагают копировать БД из одного места в другое, что мне не подходит ни в Google Drive.

Любое руководство будет драгоценным.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Наконец, с этим примером GitHub я успешно реализовал все необходимые настройки. И сейчас он жив.

0 голосов
/ 12 ноября 2018

Я использовал этот подход.

public string DATABASE_NAME = "YOUR DATABASE NAME HERE";

   public void exportDB(){
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();

            if (sd.canWrite()) {
                Log.d("TAG", "DatabaseHandler: can write in sd");
                //Replace with YOUR_PACKAGE_NAME and YOUR_DB_NAME
                String currentDBPath = "filepath here"+DATABASE_NAME;
                //Replace with YOUR_FOLDER_PATH and TARGET_DB_NAME in the SD card
                String copieDBPath = DATABASE_NAME;
                File currentDB = new File(data, currentDBPath);
                File copieDB = new File(sd, copieDBPath);
                if (currentDB.exists()) {
                    Log.d("TAG", "DatabaseHandler: DB exist");
                    @SuppressWarnings("resource")
                    FileChannel src = new FileInputStream(currentDB).getChannel();
                    @SuppressWarnings("resource")
                    FileChannel dst = new FileOutputStream(copieDB).getChannel();
                    dst.transferFrom(src, 0, src.size());
                    src.close();
                    dst.close();
                }
            }
        } catch  (Exception e) {
            e.printStackTrace();
        }

    } 
...