2013-04-26 86 views
0

我說實話。我搞砸了sqlite的升級版,現在應用程序崩潰了,如果你從全新安裝的數據庫版本4升級到新版本5的應用程序,由於最後一次升級添加列xcount。該應用程序現在強制關閉,由於重複列xcount ...任何人都知道我可以解決這個問題,用戶仍然可以保留那裏的數據?Android sqlite重複列升級

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); 
     } 
    } 
} 

回答

2

爲什麼不通過try catch語句環繞sql。
是這樣的:

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

我想我愛你:P – Paul 2013-04-26 00:51:19