我在Android的SQLite
数据库中遇到了一个问题。
我有一张表,其中包含一个字段:StudentFname。 当应用程序在Android 2.3.1上运行良好时,如果我添加另一个字段,则我的应用程序无法正常工作。
有谁能帮帮我,他们对数据库非常了解呢?
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL(SQL_MY_TABLE);
case 2:
db.execSQL("ALTER TABLE myTable ADD COLUMN myNewColumn TEXT");
}
}
注意到没有答案查找列的存在:
Cursor cursor = database.rawQuery("SELECT * FROM " + MY_TABLE, null);
int columnIndex = cursor.getColumnIndex(MY_NEW_COLUMN);
if (columnIndex < 0) {
database.execSQL("ALTER TABLE " + MY_TABLE + " ADD COLUMN " + MY_NEW_COLUMN + " TEXT");
}
在搜索相同问题时,我遇到了这个链接。它解释了如何使用升级。 https://thebhwgroup.com/blog/how-android-sqlite-onupgrade
它解释了为什么要使用以下代码。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL(DATABASE_ALTER_TEAM_1);
}
if (oldVersion < 3) {
db.execSQL(DATABASE_ALTER_TEAM_2);
}
}