在我的應用程序中,我有一個使用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