2013-01-13 100 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(葡萄牙):

刚使用所有数据创建临时表(备份),删除/创建其他数据库表并将临时表数据复制(重新插入)到新结构。一种可行的解决方案,但可能不是每种情况。