我正在尝试从我的数据库中删除一个表,所以我正在关注official instructions这样做。这就是我的代码:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// A list of the values I want to preserve
String contents = Values.KEY_ROWID + ","
+ Values.KEY_NAME + ","
+ Values.COURSE_KEY_TEACHER + ","
+ Values.KEY_DESCRIPTION + ","
+ Values.KEY_ROOM + ","
+ Values.COURSE_KEY_TIMES_OF_DAY + ","
+ Values.COURSE_KEY_COLOR;
db.execSQL("CREATE TABLE course_backup("
+ Values.KEY_ROWID + " int, "
+ Values.KEY_NAME + " text not null, "
+ Values.COURSE_KEY_TEACHER + " text not null, "
+ Values.KEY_DESCRIPTION + " text, "
+ Values.KEY_ROOM + " int, "
+ Values.COURSE_KEY_TIMES_OF_DAY + " text, "
+ Values.COURSE_KEY_COLOR + " int not null);");
db.execSQL("INSERT INTO course_backup SELECT "
+ contents
+ " FROM course_backup;");
/*db.execSQL("DROP TABLE " + Values.COURSE_TABLE + ";");
db.execSQL(Values.COURSE_DATABASE_CREATE);
db.execSQL("INSERT INTO " + Values.COURSE_TABLE + " SELECT "
+ contents + " FROM course_backup");*/
}
但是当我将数据库的副本拉到我的计算机并查看course_backup表时,它完全是空的。所有列都是正确创建的,但没有一行数据。我做错了什么?
答案 0 :(得分:1)
您正在从course_backup中选择,这是您刚创建的表格。相当合理(假设之间没有插入course_backup)这个表是空的。
答案 1 :(得分:1)
您正在从空备份表中选择行。
答案 2 :(得分:0)
您错过了要插入的列。请参阅此相关讨论:Insert into ... values ( SELECT ... FROM ... )。哦,是的,正如其他人指出的那样,你的来源和目的地都是同一个空桌。