2011-03-31 67 views
1

我有一個Android應用程序,其中我已將數據庫附加到當前數據庫連接,但是當我嘗試從附加數據庫的表中選擇時,我收到一條錯誤報告,表示沒有此類表。Android從附加數據庫中選擇

SQLiteDatabase dbc; 
try { 
    dbc = openOrCreateDatabase(DATABASE_RECOVERY,Context.MODE_PRIVATE,null); 
    dbc.execSQL(TABLE_COMPLETE); 
    dbc.execSQL("ATTACH DATABASE '" + DBRECOVERY_FULL_PATH + "' as MasterDb;"); 
    dbc.execSQL("SELECT * FROM MasterDb.properties;"); 
    db.close(); 
    dbc.close(); 
} catch(SQLException e) { 
    Toast.makeText(getApplicationContext(), "SQLException: " + e.toString(), 
      Toast.LENGTH_SHORT).show(); 
} 

我也曾嘗試:

dbc.execSQL("SELECT 'MasterDb', * FROM MasterDb.properties;"); 

但每一次,它報告說,有沒有這樣的表。

回答

0

SQLiteDatabase使用query方法可以簡化您的工作,但根據您的查詢使用嘗試dbc.execSQL("SELECT * FROM MasterDb");

+0

從MasterDb中選擇沒有指定任何表,這只是我需要從MasterDb中的屬性表中獲取數據的數據庫。 – Jonathan 2011-03-31 18:57:07

0

不要忘了使用一個「附加」數據庫,則需要使用此標誌打開它:

SQLiteDatabase.NO_LOCALIZED_COLLATORS 

請參閱SQLiteDatabase OpenDatabase

要打開你需要這樣運行的東西數據庫:

String path = getDatabasePath("YourDbName").getAbsolutePath(); 
SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.CREATE_IF_NECESSARY + SQLiteDatabase.NO_LOCALIZED_COLLATORS); 
+0

如何用該標誌打開數據庫? – Jonathan 2011-03-31 19:22:28

0

我有同樣的問題。附加之前,我忘了將新的數據庫複製到文件路徑中。