2011-03-31 44 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

我有同样的问题。附加之前,我忘了将新的数据库复制到文件路径中。