我有一个关于Android SQLite
数据库的问题。
我有一个表,其中包含一个field.StudentFname,该应用程序在Android2.3.1上工作得很好,现在如果我添加另一个字段,那么我的应用程序就不能正常工作。
谁能帮助我谁非常了解数据库,
发布于 2011-11-28 13:04:32
您可以在onUpgrade()
方法上使用ALTER TABLE
函数,如下所示:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// If you need to add a column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");
}
}
显然,根据列定义的不同,SQLite会有所不同。
发布于 2015-05-07 06:04:49
当我在自己的应用程序上需要帮助时,我遇到了这个帖子,但我发现许多答案都有问题。我建议您执行以下操作:
private static final String DATABASE_ALTER_TEAM_1 = "ALTER TABLE "
+ TABLE_TEAM + " ADD COLUMN " + COLUMN_COACH + " string;";
private static final String DATABASE_ALTER_TEAM_2 = "ALTER TABLE "
+ TABLE_TEAM + " ADD COLUMN " + COLUMN_STADIUM + " string;";
@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);
}
}
您希望确保当用户升级一个以上的版本时代码能够正常工作,并且update语句只运行所需的一个升级。有关这方面的更多信息,请查看此blog。
发布于 2011-11-28 13:07:26
最简单的方法是在SQLiteOpenHelper class
中添加一些SQL to the onUpgrade()
方法。类似于:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// If you need to add a new column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE student ADD COLUMN student_rollno INTEGER DEFAULT 0");
}
}
https://stackoverflow.com/questions/8291673
复制相似问题