2012-12-28 65 views
0

我想从我的数据库中删除一个表,所以我按照official instructions这样做。这是我的代码如下所示:INSERT INTO表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表,它是完全空的。所有的列创建正确,但没有一行数据。我究竟做错了什么?

回答

1

您正在从course_backup中选择,它是您刚创建的表格。相当合理(因为在这两者之间没有插入到course_backup中),此表为空。

+0

哈哈哈有时真的需要第二双眼睛才能发现明显。 ;) 谢谢! – mightimaus

1

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