微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android数据库备份

几个月前,我制作了一个 Android应用程序.但在那个时候,我并不认为我需要备份我的数据库.事实是,现在我做了,但我没有实现它.

现在,无论如何我都可以进行数据库备份,而不会丢失数据吗?因为我认为如果我为我的数据库备份制作方法,当我构建应用程序时,我将丢失所有数据,因为我有这个方法

public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
    db.execsql("DROP TABLE IF EXISTS " + POINTS_TABLE);
    db.execsql("DROP TABLE IF EXISTS " + NETWORKS_TABLE);
    onCreate(db);
}

解决方法

将db文件复制到sdcard是一种备份方式

public static void copyFileInSDCard () {

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

        if (sd.canWrite ()) {
            String DATABASE_NAME = "YOURdbnAME";
            String currentDBPath = "//data//your.package//databases//" + DATABASE_NAME;
            String backupDBPath = "FILE[Name]";
            File currentDB = new File (data,currentDBPath);
            File backupDB = new File (sd,backupDBPath);

            if (currentDB.exists ()) {
                @SuppressWarnings("resource")
                FileChannel src = new FileInputStream (currentDB).getChannel ();
                @SuppressWarnings("resource")
                FileChannel dst = new FileOutputStream (backupDB).getChannel ();
                dst.transferFrom (src,src.size ());
                src.close ();
                dst.close ();
            }
        }
    }
    catch (Exception e) {
        e.printstacktrace ();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐