gpt4 book ai didi

java - Android sqlite 升级时出现重复列

转载 作者:行者123 更新时间:2023-12-02 07:04:51 25 4
gpt4 key购买 nike

我会说实话。我搞砸了 sqlite 的升级位,现在,如果您从数据库版本 4 的全新安装到应用程序的新版本 5,由于上次升级添加了 xcount 列,应用程序就会崩溃。该应用程序现在由于重复的列 xcount 而强制关闭...有人知道如何修复此问题,让用户仍然可以保留数据吗?

private static final String DATABASE_NAME = "data";
private static final String DATABASE_TABLE = "data";
private static final int DATABASE_VERSION = 5;

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper {

DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL("ALTER TABLE data ADD COLUMN prior_reminder long DEFAULT 0");
}
if (oldVersion < 3) {
db.execSQL("ALTER TABLE data ADD COLUMN is_repeating TEXT DEFAULT 'default'");
}
if (oldVersion < 5) {
db.execSQL("ALTER TABLE data ADD COLUMN xamount long DEFAULT 0");
} else {
db.execSQL("DROP TABLE IF EXISTS data");
onCreate(db);
}
}
}

最佳答案

为什么不用 try catch 语句包围 sql。 像这样:

try{
db.execSQL("ALTER TABLE data ADD COLUMN xamount long DEFAULT 0");
}catch(Exception e){
}

关于java - Android sqlite 升级时出现重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com