我正在尝试将sqlite版本号从1升级到2,但是没有调用onupgrade方法。
我是否必须删除设备中的应用程序,然后安装该应用程序进行测试?
只有被调用的方法是DatabaseHelper
和onCreate
没有其他方法可以调用。
在DatabaseHelper.java文件中
private static final int DBVersion = 1; // I had change this value to 2.but it is not working.
public DatabaseHelper(Context context, CursorFactory cf) {
super(context, DBName, cf, DBVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE_Table);
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
//This is not called.If it called i will add the changed here
}
dataprovider.java的另一个类
@Override
public boolean onCreate() {
dbHelper = new DatabaseHelper(getContext(), null);
return true;
}
答案 0 :(得分:1)
使用:-
@Override
public boolean onCreate() {
dbHelper = new DatabaseHelper(getContext(), null);
SqliteDatabase db = dbHelper.getWritableDatabase(); //<<<<<<<<<<<
return true;
}
尝试打开数据库,因此将调用 onCreate / onUpgrade 。 -仅在数据库不存在时 onCreate 。 - onUpgrade (仅当数据库存在并且指定的版本号大于存储在数据库中的数据库版本时)。
也就是说,当实例化数据库助手(SQLiteOpenHelper的子类)时,不会尝试打开数据库。
仅当调用SQLiteDatabase的 getWritableDatabase (或 getReadableDatabase )时才尝试打开数据库。两者都尝试打开数据库。注意getWritableDatabase或getReadableDatabase可能会隐式调用。
我个人倾向于在使用:-
构建数据库助手时强行打开public DatabaseHelper(Context context, CursorFactory cf) {
super(context, DBName, cf, DBVersion);
this.getWritableDatabase();
}
this.getWritableDatabase()
。