public class BackupTask extends AsyncTask<String, Void, Integer> {
private static final String COMMAND_BACKUP = "backupDatabase";
public static final String COMMAND_RESTORE = "restroeDatabase";
private Context mContext;
public BackupTask(Context context) {
this.mContext = context;
}
@Override
protected Integer doInBackground(String... params) {
// TODO Auto-generated method stub
// 获得正在使用的数据库路径,我的是 sdcard 目录下的 /dlion/db_dlion.db
// 默认路径是 /data/data/(包名)/databases/*.db
File dbFile = mContext.getDatabasePath(Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/dlion/db_dlion.db");
File exportDir = new File(Environment.getExternalStorageDirectory(),
"dlionBackup");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
File backup = new File(exportDir, dbFile.getName());
String command = params[0];
if (command.equals(COMMAND_BACKUP)) {
try {
backup.createNewFile();
fileCopy(dbFile, backup);
return Log.d("backup", "ok");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return Log.d("backup", "fail");
}
} else if (command.equals(COMMAND_RESTORE)) {
try {
fileCopy(backup, dbFile);
return Log.d("restore", "success");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return Log.d("restore", "fail");
}
} else {
return null;
}
}
private void fileCopy(File dbFile, File backup) throws IOException {
// TODO Auto-generated method stub
FileChannel inChannel = new FileInputStream(dbFile).getChannel();
FileChannel outChannel = new FileOutputStream(backup).getChannel();
try {
inChannel.transferTo(0, inChannel.size(), outChannel);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (inChannel != null) {
inChannel.close();
}
if (outChannel != null) {
outChannel.close();
}
}
}
}
在 mainActivity 里异步加载备份、还原:
// 数据恢复
private void dataRecover() {
// TODO Auto-generated method stub
new BackupTask(this).execute("restroeDatabase");
}
// 数据备份
private void dataBackup() {
// TODO Auto-generated method stub
new BackupTask(this).execute("backupDatabase");
}
原址:http://www.oschina.net/question/157182_51370
分享到:
相关推荐
SQLite:SQLite数据库备份与恢复
SQLite3提供了多种方法来实现数据库的备份与恢复,无论是通过SQL脚本文件还是直接在数据库文件间进行操作。了解并熟练掌握这些命令对于有效管理和维护SQLite3数据库至关重要。希望本文能帮助您更好地理解SQLite3...
在这种情况下,"SQLite数据库删除恢复"工具显得尤为重要。 SQLite数据库本身并不提供内置的删除恢复功能。一旦数据被删除,它会被标记为可重用空间,但实际数据可能仍存在于磁盘上,直到被新的数据覆盖。这款工具...
在提供的压缩包文件"**C# WinForm 数据库备份与恢复 VS2008实现**"中,应该包含了使用C# WinForm界面和上述两种方法实现数据库备份恢复的示例代码。通过分析和学习这个示例,开发者可以更好地理解和掌握如何在实际...
#### 一、数据库备份的重要性 数据库备份是数据库管理中的一个重要环节,旨在保护数据安全,防止数据丢失。通过定期备份,可以在遇到意外情况(如硬件故障、软件错误或人为误操作等)时,快速恢复数据至备份时的状态...
7. 数据备份与恢复:提供数据库的备份和恢复功能,确保数据安全。 8. 数据同步:支持数据库之间的同步,用于多设备或多环境的数据一致性。 9. 图形化界面:提供直观的图形用户界面(GUI),使得非专业程序员也能轻松...
9. 数据备份与恢复:支持数据库的备份和恢复操作,确保数据安全。 压缩包中包含的文件是SQLiteBrowser运行所必需的动态链接库(DLL)文件和主执行文件。这些文件主要包括Qt库的组件,如QtGui4.dll、QtCore4.dll、Qt...
1. **数据库创建与管理**:SQLite Studio允许用户创建新的SQLite数据库,打开已有的数据库进行编辑,以及对数据库进行备份和恢复操作。它支持创建、修改和删除数据库表,以及管理索引、触发器和视图。 2. **SQL查询...
9. **数据备份与恢复**: Android提供了`SQLiteBackupHelper`类,可以帮助开发者实现数据库的备份和恢复功能。 10. **性能优化**: 为提升数据库性能,可以考虑使用索引、适当的数据类型、避免在SQL语句中使用硬编码...
1. **数据库管理**: 创建、打开、备份、恢复和删除SQLite数据库文件。 2. **表操作**: 创建、修改、删除表,以及查看表结构和数据。 3. **索引和视图**: 创建、删除索引,以及创建和修改视图。 4. **查询构建器**: ...
总之,Android应用中的SQLite数据库备份与还原是一项重要的功能,需要开发者自定义实现。正确地设计和实现这个过程不仅可以确保数据安全,还可以提升用户的满意度。同时,关注用户体验,如提供清晰的界面和反馈,是...
例如,创建一个数据库,然后创建表,插入数据,进行复杂的查询,更新和删除数据,最后备份和恢复数据库。这些步骤将帮助你熟悉数据库生命周期的各个环节。 六、性能优化与管理 SQLite提供了很多工具和策略来优化...
8. **备份与恢复**:可以对数据库进行备份,并在需要时恢复。 9. **导入与导出数据**:可以从多种格式(如CSV、JSON)导入数据,也可以将数据导出为各种格式。 10. **权限管理**:尽管SQLite本身的权限系统相对简单...
- **数据库管理**: 创建、打开、备份和恢复SQLite数据库。 - **表管理**: 创建、修改和删除表,定义字段类型和约束。 - **索引管理**: 创建和删除索引以优化查询性能。 - **视图管理**: 创建和操作视图,提供更...
5. 数据库备份与恢复:许多SQLite数据库工具还支持数据库的导出和导入,这在备份和迁移数据库时非常实用。 6. 开源与跨平台:SQLite是开源的,这意味着任何人都可以查看其源代码并根据需要进行定制。同时,SQLite...
3. 兼容性问题:不是所有的SQLite工具都支持加密数据库,备份和恢复时需使用支持加密的工具。 六、NativeDemo示例 "NativeDemo"可能是一个示例项目,展示了如何在Android原生环境中实现SQLCipher加密。这个项目可能...
这个"Sqlite数据库加密小工具"很可能就是基于这样的扩展,用于帮助用户对SQLite数据库进行加密和解密操作。 加密过程通常包括以下步骤: 1. **安装加密库**:首先,你需要在你的开发环境中集成像SQLCipher这样的...
5. **备份与恢复**:用户可以轻松地备份和恢复SQLite数据库,确保数据安全。这对于防止意外数据丢失或在不同设备间迁移数据非常有用。 6. **跨平台**:SQLiteStudio v3.1.1支持Windows、macOS和Linux操作系统,这...
1. **数据库管理**:创建、打开、备份和恢复SQLite数据库,管理表、索引和触发器。 2. **数据浏览**:以表格形式显示数据,支持排序、过滤和搜索,还可以导出数据到CSV或其他格式。 3. **SQL编辑**:提供集成的SQL...