Android从附加数据库中选择

时间:2011-03-31 16:53:12

标签: android database sqlite

我有一个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;");

但每次都报告说没有这样的表格。

3 个答案:

答案 0 :(得分:0)

使用query中的SQLiteDatabase方法可以简化您的工作,但根据您的查询,请尝试使用dbc.execSQL("SELECT * FROM MasterDb");

答案 1 :(得分: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);

答案 2 :(得分:0)

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

相关问题