2013-01-13 82 views
0

現在我onUpgrade方法是這樣的:防止數據丟失onUpgrade

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS questions"); 
    onCreate(db); 
} 

這使得當前的新表,每次我的應用程序從市場更新。

如何防止我的表被刪除,並且只在我想要時被重新創建或修改?

回答

1

您應該檢查數據庫版本。只有當前版本比新版本舊時,纔會執行onUpgrade()。每次通過相同的參數(最後一個)檢查您的子類的SQLiteOpenHelper構造函數。 如果您的數據庫版本保持不變,您的數據庫將不會被重新創建(onUpgrade()將不會被執行。

public DBHelper(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
} 
1

如何防止被重新創建或當我想修改被刪除,只有我的表?

刪除您onUpgrade()方法的當前身體,做一個更復雜的升級過程:添加表,刪除表,改變表等

0

請參閱本solution(葡萄牙):

剛使用所有數據創建臨時表(備份),刪除/創建其他數據庫表並將臨時表數據複製(重新插入)到新結構。一種可行的解決方案,但可能不是每種情況。

相關問題