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 テーブルを見ると、完全に空です。すべての列が正しく作成されましたが、データが 1 行もありません。私は何を間違っていますか?

4

3 に答える 3

1

作成したばかりのテーブルである course_backup から選択しています。当然のことながら (間に course_backup への挿入がないことを考えると)、このテーブルは空です。

于 2012-12-28T00:34:57.247 に答える
1

空のバックアップ テーブルから行を選択しています。

于 2012-12-28T00:35:08.547 に答える
0

INSERT したい列がありません。この関連する議論を参照してください: Insert into ... values ( SELECT ... FROM ... )。そうそう、他の人が指摘したように、ソースと宛先は同じ空のテーブルです。

于 2012-12-28T00:34:08.780 に答える