是onUpgrade
SQLiteOpenHelper
的方法|有没有打过电话?如果是这样,它是什么时候调用的,由什么调用?如果开发人员没有调用它,那为什么会在那里?该功能到底发生了什么?我已经看到了删除所有表格的示例,但是随后有评论说删除所有表格不是您应该做的。有什么建议么?
最佳答案
对于那些想知道调用 onUpgrade()
的确切时间的人,它是在调用 getReadableDatabase()
或 期间getWriteableDatabase()
.
对于那些不清楚它如何确保触发的人,答案是:当提供给 SqliteOpenHelper
的构造函数的数据库版本更新时触发。这是一个例子
public class dbSchemaHelper extends SQLiteOpenHelper {
private String sql;
private final String D_TAG = "FundExpense";
//update this to get onUpgrade() method of sqliteopenhelper class called
static final int DB_VERSION = 2;
static final String DB_NAME = "fundExpenseManager";
public dbSchemaHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
// TODO Auto-generated constructor stub
}
现在到...onUpgrade()
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
sql = "ALTER TABLE " + fundExpenseSchema.Expense.TABLE_NAME + " ADD COLUMN " + fundExpenseSchema.Expense.FUNDID + " INTEGER";
arg0.execSQL(sql);
}
关于java - 是否曾经调用过 onUpgrade 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163845/