从dropbox用备份替换数据库

时间:2014-01-10 01:23:30

标签: android sqlite dropbox fileoutputstream

我正在尝试在Dropbox上备份我的数据库版本。一切正常,将文件上传到Dropbox但我无法用Dropbox上的那个替换当前手机上的那个。

    new Thread(new Runnable() {
        public void run() {
            File file = new File(getDatabasePath("my_database").getPath());
            file.getParentFile().mkdirs();

            try {
                FileOutputStream outputStream = new FileOutputStream(file);
                DropboxFileInfo info =dbInstance.getFile("/BackupFolder/my_database", null,
                        outputStream, null);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }).start();

当操作完成后,我得到了很多“SQLiteException:没有这样的表”错误。我已经验证了dropbox中的数据库是否正确。

01-09 20:03:37.601: W/System.err(7185): android.database.sqlite.SQLiteException: no such table: transaction_table (code 1)
at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
01-09 20:03:37.601: W/System.err(7185): at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1036)
01-09 20:03:37.601: W/System.err(7185):     at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:836)
01-09 20:03:37.601: W/System.err(7185):     at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
01-09 20:03:37.601: W/System.err(7185):     at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:144)
01-09 20:03:37.601: W/System.err(7185):     at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
01-09 20:03:37.601: W/System.err(7185):     at android.content.ContentResolver.query(ContentResolver.java:436)
01-09 20:03:37.601: W/System.err(7185):     at android.content.ContentResolver.query(ContentResolver.java:360)

更新

我已将文件下载到设备上的其他位置,以便我可以使用sqlite3查看它,一切都在那里。所以,显然下载工作正常但我无法在运行时使用此文件覆盖现有数据库。

1 个答案:

答案 0 :(得分:0)

尝试在覆盖数据库之前关闭所有数据库连接。

你可以这样做:

  • 关闭与旧数据库的连接。
  • 删除旧数据库文件。
  • 移动或复制新数据库。
  • 创建与新数据库的新连接。