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?在添加表架构中的更改之前,是否手动增加了数据库版本。