如何在Android中不存在的Sqlite数据库表中添加新列?

时间:2013-10-10 04:45:45

标签: android sqlite

在版本升级时,我想在sqlite数据库表中添加一个新列,这在android中不是exsit。如果该列已存在,则不应更改该表。在onUpgrade()方法中我不会丢弃表becoz我不想丢失数据。

2 个答案:

答案 0 :(得分:4)

我拼凑了几条评论来得到这个:

Cursor cursor = database.rawQuery("SELECT * FROM MY_TABLE", null); // grab cursor for all data
int deleteStateColumnIndex = cursor.getColumnIndex("MISSING_COLUMN");  // see if the column is there
if (deleteStateColumnIndex < 0) { 
    // missing_column not there - add it
    database.execSQL("ALTER TABLE MY_TABLE ADD COLUMN MISSING_COLUMN int null;");
}

这故意忽略了数据库版本号,如果不存在则纯粹添加列(在我的情况下,版本号没有帮助我,因为当该列应该被添加时编号已经变得不稳定)

答案 1 :(得分:3)

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

    // If you need to add a column
    if (newVersion > oldVersion) {

     if(!ColunmExists) {
        db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");
     }
    }
}