繁体   English   中英

INSERT INTO表SELECT值FROM other_table不起作用

[英]INSERT INTO table SELECT values FROM other_table not working

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM