Android sqlite重复列升级

时间:2013-04-26 00:21:54

标签: java android sqlite

我会说实话。由于最后一次升级添加了列xcount,如果你从全新的数据库版本4安装到应用程序的新版本5,我现在搞砸了sqlite的升级版本。由于重复的列xcount,应用程序现在强制关闭...任何人都知道如何解决这个问题,用户仍然可以保留数据吗?

private static final String DATABASE_NAME = "data";
private static final String DATABASE_TABLE = "data";
private static final int DATABASE_VERSION = 5;

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
        if (oldVersion < 2) {
            db.execSQL("ALTER TABLE data ADD COLUMN prior_reminder long DEFAULT 0");
        }
        if (oldVersion < 3) {
            db.execSQL("ALTER TABLE data ADD COLUMN is_repeating TEXT DEFAULT 'default'");
        }
        if (oldVersion < 5) {
            db.execSQL("ALTER TABLE data ADD COLUMN xamount long DEFAULT 0");
        } else {            
            db.execSQL("DROP TABLE IF EXISTS data");
            onCreate(db);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

为什么不通过try catch语句包围sql。像这样:

try{
db.execSQL("ALTER TABLE data ADD COLUMN xamount long DEFAULT 0");
}catch(Exception e){
}