gpt4 book ai didi

android - 如何更新 SQLite 数据库而不丢失所有现有数据?

转载 作者:IT王子 更新时间:2023-10-29 06:20:47 28 4
gpt4 key购买 nike

我正在向我的应用程序的 SQLite 数据库中添加一个表。我所有的语法都很好,不是问题。但是我在正确创建新表时遇到了一些麻烦。我添加了新表....

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

我的创建方法。我有 3 张 table 。当我更新版本号时,出现“表请求(指CREATE_REQUESTS)已经创建”的错误。看看我的 onUpgrade 方法...

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}

让我明白 db.execSQL("DROP TABLE IF EXISTS contacts") 这行在 onCreate 方法中引用了我的 DATABASE_CREATE 表,用于删除旧表,然后下一行 onCreate(db); 重新创建它。我没有将请求添加到该 execSQL 行中,这是导致错误的原因。问题是:我不想丢失我已有的两个表中的数据。有没有办法像我尝试做的那样添加一个表,而不丢失所有旧数据?谢谢。

最佳答案

您可以在 onUpgrade 中做任何您想做的事情。您可以使用 ALTER 向表中添加新列。

最坏的情况是,如果您的模式完全不同,您将不得不创建新表,使用旧表中的数据填充它,然后删除旧表。

在任何情况下,onUpgrade 旨在允许顺利升级而不会丢失任何数据。正确实现它完全取决于您。

关于android - 如何更新 SQLite 数据库而不丢失所有现有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188839/

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