我有一个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 :(得分: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)
我有同样的问题。我忘了在附加它之前将新数据库复制到文件路径。