在我的应用程序中,我有一个使用DBHelper类中的DB查询创建的数据库。我希望onUpgrade语句在安装apk时运行,因为有可能用户可能会打开并安装相同的应用程序。如何在第一次安装时运行onUpgrade()语句?
在这种情况下,它成为设备上的第一个安装,onUpgrade不会运行,导致应用程序崩溃。
如果在以前的应用程序中更新新应用程序,它会很好地工作。
如何重新使用此?这种情况下的解决方案是什么?
请帮忙!!提前致谢 !!
这里是我的DbHelper.java
public class Dbhelper extends SQLiteOpenHelper {
public Dbhelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(TABLE_CREATE_IMAGE);
database.execSQL(TABLE_CREATE_ATTEDANCE);
database.execSQL(TABLE_CREATE_STOCK);
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion,
int newVersion) {
Log.e("","upgrade ");
database.execSQL("ALTER TABLE stock ADD db_stock_id varchar(100)");//1.1
//
}
public void dropandcreate(SQLiteDatabase database)
{
database.execSQL("DROP TABLE IF EXISTS image");
database.execSQL("DROP TABLE IF EXISTS attendance");
database.execSQL("DROP TABLE IF EXISTS stock");
onCreate(database);
}
}
'onUpgrade不运行它会导致应用程序crash'请出示这让上应用程序崩溃 – 2015-02-23 06:01:48
请发表您的'logcat' – Gattsu 2015-02-23 06:04:08
我不明白是什么问题。 'onCreate()'总是必须创建表的最新版本,'onUpgrade()'仅用于升级表的旧版本。换句话说,在'onCreate()'中创建库存表的查询已经包含了'db_stock_id'这个列。 – 2015-02-23 06:05:17