将SQLite数据库文件备份到SD卡

时间:2011-10-19 13:07:25

标签: android

所以我看到了很多将SQLite数据库文件备份到SD卡的例子,我已经让它在开发中的android模拟器上成功运行,但它在手机本身没有按预期工作。这是我不明白的奇怪部分。备份文件确实会在SD卡上创建文件,但是并非应用程序使用的SQLite数据库中存在的所有数据都包含在备份的文件中。还有其他人遇到过这个问题吗?下面是我用来备份文件的代码。 DB_PATH常量包含/ data / data / [包名称] / databases /的值。对此的任何帮助将不胜感激。

try
{
                File dbFile = new File(DataBaseHelper.DB_PATH
                        + DataBaseHelper.DB_NAME);

                File exportDir = new File(Environment.getExternalStorageDirectory()
                        + DB_BACKUP_PATH);

                if (!exportDir.exists()) {
                    exportDir.mkdirs();
                }

                File file = new File(exportDir, dbFile.getName());

                file.createNewFile();
                FileUtil.copyFile(dbFile, file);
                return true;
            } catch (IOException e) {
                BusinessLogic.errorHandler(e, ManageDataActivity.this);
                return false;
            }
            catch(Exception e) {
                BusinessLogic.errorHandler(e, ManageDataActivity.this);
                return false;
            }

1 个答案:

答案 0 :(得分:0)

如果没有root权限,则无法访问数据库文件。这解释了你所看到的行为。

我会在SD卡上创建一个新数据库,然后尝试从旧数据库中复制所有数据,而不是复制文件本身。