我正在尝试通过在我的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 !!!
答案 0 :(得分:1)
在数据库帮助程序的构造函数中,您是否正确传递了新版本号?
编辑:应该看起来像这样
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
和DATABASE_VERSION
应为2。