0

我会诚实的。我搞砸了 onUpgrade 一点 sqlite 现在如果您从全新安装的数据库版本 4 升级到应用程序的新版本 5,由于上次升级添加了 xcount 列,应用程序将崩溃。由于重复列 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);
        }
    }
}
4

1 回答 1

2

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

try{
db.execSQL("ALTER TABLE data ADD COLUMN xamount long DEFAULT 0");
}catch(Exception e){
}
于 2013-04-26T00:44:24.433 回答