1

onUpgrade 関数で小さな問題が発生しました。コードは次のとおりです。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if(oldVersion<2){
        db.rawQuery("ALTER TABLE "+this.getTableName()+" ADD COLUMN "+COLUMNS.TIME+ " integer default 0;", null);
        db.rawQuery("ALTER TABLE "+this.getTableName()+" ADD COLUMN "+COLUMNS.DATE+ " integer default 0;", null);
        db.rawQuery("UPDATE "+this.getTableName()+ " SET "+COLUMNS.TIME+ "="+COLUMNS.TIME_OLD+";", null);
        db.rawQuery("UPDATE "+this.getTableName()+ " SET "+COLUMNS.DATE+ "="+COLUMNS.DATE_OLD+";", null);
    }
};

エラーが発生するため、onUpgrade関数は明らかに正しく呼び出されます。

そのような列はありません: _timenew (コード 1): 、コンパイル中: UPDATE TABLE_SCORE_NORMAL SET _timenew=_time;

なぜこのようになっているのだろうか。コンソールでこれを手動で試すと、完全に機能します。

前もって感謝します。

4

2 に答える 2

1

rawQuery()SQL をコンパイルしますが、実行しません。コンパイルされた SQL を実行するmoveTo...()には、返された のメソッドの 1 つを呼び出す必要があります。Cursor

execSql()SQL のコンパイルと実行の両方を行います。

于 2013-12-26T12:37:25.200 に答える