2013-05-10 88 views
1

我在我的應用程序中使用2個數據庫。我有一個最常用的主數據庫,在某些時候我需要第二個數據庫。因此,爲了使用它,我將其附屬於使用這種方法的主要數據庫:Android分離數據庫

public void attachDb(String dbName, String dbAlias){ 
    String dbPath = context.getDatabasePath(dbName).getAbsolutePath(); 
    myDataBase.execSQL("attach database '" + dbPath + "' as " + dbAlias); 
} 

現在我的問題是,我要分離的第二個數據庫,當我退出屏幕,我得到一個強制關閉。我嘗試使用這個代碼將其卸下:

public void detachDatabase(String dbName){ 
    String dbPath = context.getDatabasePath(dbName).getAbsolutePath(); 
    myDataBase.execSQL("detach database '" + dbPath + "'"); 
} 

錯誤日誌這樣說:*

11月5日至13日:48:23.173:ERROR/AndroidRuntime(7338):致命異常:Thread- 145 android.database.sqlite.SQLiteException:錯誤代碼1:SQL邏輯錯誤或缺少數據庫 at android.database.sqlite.SQLiteStatement.native_execute(Native Method) at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java :92) at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899) 在android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839) 在com.example.DBManagerBase.detachDatabase(DBManagerBase.java:168) 在com.example.run(MyClass.java:233) 在java.lang.Thread.run(Thread.java:856)

*

我不知道這個問題可能是什麼。有誰能夠幫助我?我會很感激。

+0

請勿附加和分離數據庫,請使用保留多個數據庫的一個適配器。在這裏看到答案︰http://stackoverflow.com/questions/4498664/android-multiple-databases-open – 2013-05-10 14:56:47

+0

如果我做查詢哪些連接來自這兩個數據庫的表將例子工作?根據我的愚見,我不認爲如果它們沒有附加,它是否有效。 – Laura 2013-05-10 15:25:52

+0

聯接只能在處於相同數據庫上下文的表中工作。在任何情況下,您都無法使用SQL連接兩個位於不同數據庫中的表。您需要從每個表中進行選擇,並對代碼中的結果數據進行連接。 – 2013-05-10 15:34:01

回答

5

僅限使用myDataBase.execSQL(「detach」+ dbAlias)
您不使用數據庫的路徑+名稱,只是您提供的別名。