每次都会调用Android onUpgrade

时间:2011-05-27 14:39:30

标签: android

我正在尝试通过在我的android app中的Sqlite表中添加一列来升级某个表。我在我的DBHelper的onUpgrade方法中添加了一个alter table语句。

以下是我所看到的问题 我将Database版本的值从1更改为2,所以理想情况下现在应该调用onUpgrade。它会被调用,但每次我实例化类时都会调用它。结果我得到一个列已存在错误。

这是onUpgrade方法

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
    int newVersion) 
    {
        Log.d("old Version",oldVersion+"");
        Log.d("New Version",newVersion+"");
        db.beginTransaction();

        try
        {           
            String DATABASE_UPGRADE;
            DATABASE_UPGRADE="alter table "+DATABASE_TABLE_MESSAGES+" ADD COLUMN  "+ IS_READ+ " integer DEFAULT 0;";
            db.execSQL(DATABASE_UPGRADE);
            Log.d("upgrade", "Successful");
            db.setTransactionSuccessful();
        } 


    finally 
    {
        db.endTransaction();
    }

    }
}    

我想知道为什么每次都会调用onUpgrade !!!

1 个答案:

答案 0 :(得分:1)

在数据库帮助程序的构造函数中,您是否正确传递了新版本号?

编辑:应该看起来像这样

DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

DATABASE_VERSION应为2。