2014-01-10 49 views
0

我正在嘗試在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) 

UPDATE

我已經下載了設備上的文件到另一個位置,這樣我就可以使用sqlite3的查看,一切都在那裏。所以,顯然下載工作正常,但我無法在運行時用此文件覆蓋現有的數據庫。

+0

請添加您的例外。 –

+0

我在添加查詢時添加了一個例外。 – DroidT

+0

檢查數據庫的名稱和位置。 並檢查數據庫文件是否存在。 和打印文件大小,這將是有用的信息。 –

回答

0

嘗試在覆蓋數據庫之前關閉所有數據庫連接。

你可以這樣做:

  • 舊數據庫關閉連接。
  • 刪除舊的數據庫文件。
  • 移動或複製新數據庫。
  • 創建到新數據庫的新連接。