我有一个扩展SQLiteOpenHelper的类。重载的两个函数是
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase dataBase, int oldVersion,
int newVersion) {
}
在OnCreate函数中,我添加SQL脚本来创建表。现在如果我想升级数据库中的表怎么办?
何时调用onUpgrade函数?
oldVersion和newVersion int值是什么?
这些允许我在我的数据库上创建版本控制吗?
与版本2中一样,我想添加一个新表,在版本3中,我想在现有数据库表中添加一个新列?
我该怎么做?
每次创建类的对象时都会调用onCreate函数,还是Android会在安装应用程序时调用它?
答案 0 :(得分:1)
oldVersion
和newVersion
int值是什么?
这些用于对数据库进行版本控制。数据库版本在SQLiteOpenHelper的构造函数中传递。
何时调用
onUpgrade
函数?
onUpgrade
>时会调用 newVersion
oldVersion
这些允许我在我的数据库上创建版本控制吗?
是的,这些值允许您对数据库进行版本化。
就像在版本2中一样,我想添加一个新表,在我想要的版本3中 将新列添加到现有数据库表中?
在onUpgrade
方法中执行CREATE TABLE
查询,该查询将在数据库中创建新表。同样,如果要添加新列,请使用ALTER TABLE
语句。
如果您的应用程序尚未创建数据库,则会调用每次创建对象时都会调用onCreate函数 这个类,或Android只会在应用程序调用时调用它 设置?
OnCreate
,例如 - 您是第一次启动应用程序,在清除数据后第一次运行应用程序。
答案 1 :(得分:0)
我给你一个剪切,这里我设置数据库版本为1.如果我需要升级所有数据库,我会使它2或其他东西和SQLiteOpenHelper将知道这是一个新版本的数据库,并调用onUpgrade方法......
private final int DATABASE_VERSION = 1;
private final String DATABASE_NAME = "yourDatabase";
private class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SIGNIN_FIRST);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// you can drop table and re create it here.
}
}