android:sqlite上的onUpgrade对我来说不起作用
我在数据库中添加新列(我有此数据库的数据) 我有以下代码:android:sqlite上的onUpgrade对我来说不起作用,android,Android,我在数据库中添加新列(我有此数据库的数据) 我有以下代码: @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (newVersion > oldVersion) { db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0"); } } 但它不起作用,我从
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0");
}
}
但它不起作用,我从哪里得到旧版本和新版本
现在,我做到了:
try{
db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0");
}
catch (Exception e) {
// TODO: handle exception
}
这对我来说很管用——但我知道这是一个丑陋的解决方案你不必自己检查;SQLiteOpenHelper会自动执行此操作!当您输入比以前更高的版本号时,帮助程序将调用
onUpgrade()
方法,您应该在该方法中处理升级时的操作
....
....
mySqlHelper = new mySqlHelper (context, DATABASE_NAME, null, DATABASE_VERSION);
private static class MySQLHelper extends SQLiteOpenHelper {
public MySqlHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// upgrade code..
// drop tables
onCreate(db);
}
}
请尝试打印旧版本和新版本的日志,看看您得到了什么。您是否在数据库类中声明了数据库版本?您是否手动更改了该值或向表架构中添加了一些详细信息?检查是否调用了onUpgrade?在添加表架构中的更改之前,是否手动增加了数据库版本。