0

我正在尝试从我的数据库中删除一个表,所以我按照官方说明进行操作。这就是我的代码的样子:

@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 表时,它完全是空的。所有列都是正确创建的,但没有一行数据。我究竟做错了什么?

4

3 回答 3

1

您正在从 course_backup 中进行选择,这是您刚刚创建的表。相当合理(假设没有插入到 course_backup 之间)这个表是空的。

于 2012-12-28T00:34:57.247 回答
1

您正在从空的备份表中选择行。

于 2012-12-28T00:35:08.547 回答
0

您缺少要插入的列。请参阅此相关讨论:插入...值(SELECT ... FROM ...)。哦,是的,正如其他人指出的那样,您的源和目标是同一个空表。

于 2012-12-28T00:34:08.780 回答