几个月前,我制作了一个 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, 0, src.size ());
src.close ();
dst.close ();
}
}
}
catch (Exception e) {
e.printStackTrace ();
}
}
关于安卓数据库备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27524009/