在Android中备份SQLite数据库

时间:2018-11-12 16:35:01

标签: android sqlite android-sqlite

我需要对移动设备的内部存储器或SD卡中的SQLite数据库进行脱机备份。但是我一无所知,这怎么可能。

我在SO上关注了许多线程,但是他们建议将DB的一个位置复制到另一个位置,这对我来说并不适合,也不能复制到Google Drive

任何指导都是宝贵的。

2 个答案:

答案 0 :(得分:1)

我使用了这种方法。

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();
        }

    } 

答案 1 :(得分:0)

最后,通过此GitHub sample,我成功实现了所需的任何自定义。现在就开始直播。