我为我的Android应用程序实现了一个ContentProvider,它运行得很好但是当我对架构进行一些更改时,数据库似乎没有升级。 我在SQLiteOpenHelper中有以下代码:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(DEBUG_TAG, "Upgrading database. Existing contents will be lost. ["
+ oldVersion + "]->[" + newVersion + "]");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TUTORIALS);
onCreate(db);
}
如果我使用新架构更新我的应用程序,那么我的所有插入失败但是如果我卸载旧版本并安装新版本的应用程序,那么一切正常。所以我想从未调用onUpgrade()。 oldVersion和newVersion指的是什么?我需要在任何地方指定版本吗?
答案 0 :(得分:2)
SQLiteOpenHelper有一个版本参数,如果你应该调用增量onUpgrade
:
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
例如,我有以下类,如果我增加dbVersion
,则调用它:
public class DBHelper extends SQLiteOpenHelper {
private SQLiteDatabase m_Db;
public DBHelper(Context context, String dbPath, int dbVersion) {
super(context, dbPath, null, dbVersion);
...
m_Db = getWritableDatabase();
}
...
}