如何向Android SQLite数据库添加新列

时间:2011-09-07 15:04:44

标签: java android sqlite

我想在Android SQLite数据库中添加一个新列,然后我收到了错误。我该怎么做以及如何做?我以为我必须删除表并创建一个新表,但我不知道如何。

3 个答案:

答案 0 :(得分:5)

最简单的方法是在onUpgrade()类的SQLiteOpenHelper方法中添加一些SQL。类似的东西:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    // If you need to add a column
    if (newVersion > oldVersion) {
        db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");
    }
}

显然,SQL会因列定义而异。

答案 1 :(得分:0)

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    // If you need to add a column
    if (newVersion > oldVersion) {
        db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");
    }
}

答案 2 :(得分:0)

例如在版本2中,向数据库添加新列的正确方法是:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
         db.execSQL("ALTER TABLE table_name ADD COLUMN new_column_name TEXT");
    }
}

它涵盖了所有陷阱,包括重大问题:如果用户从版本1升级到版本3,他们将完全错过升级查询!这些用户将处于尴尬的境地,他们缺少一些中间更新,并且没有预期的sql模式。

也不要忘记更改create语句以添加新列。