我想在Android SQLite数据库中添加一个新列,然后我收到了错误。我该怎么做以及如何做?我以为我必须删除表并创建一个新表,但我不知道如何。
答案 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语句以添加新列。