gpt4 book ai didi

android - 在创建数据库后创建表是否会更改 SQLite 中的数据库版本?

转载 作者:行者123 更新时间:2023-11-29 18:14:11 30 4
gpt4 key购买 nike

我为 Android 应用程序创建了一个 SQLite 数据库。数据库原本有几张表。

在特定的应用程序版本上,我添加了创建新表的代码(即 db.execSQL("create table if not exists "+ table_name ...),但从未在 SQLiteOpenHelper 的构造函数中将数据库版本从 1 更改为 1。

现在我想升级数据库。我的问题是:

现有的修改后的数据库是否仍然是版本 1,或者在创建新表时数据库版本号是否自动增加(即使数据库没有通过 onUpgrade(...) 方法升级)?

提前致谢。

最佳答案

当你扩展你的 SQLiteOpenHelper 类时,你定义了要使用的数据库版本。例如,通过以下方式:

private static class DbWordsHelper extends SQLiteOpenHelper {

private DbWordsHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}

如果升级数据库,则应在代码中手动更改 DB_VERSION 并重建应用程序。新版本必须高于旧版本。当 SQLiteOpenHelper 检测到您的版本号已更改时,它会调用 onUpgrade 方法,您应该在其中提供如何更新数据库的逻辑:

    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// Here in the future should be method that change the schema of the
// database. Now we just delete
try {
db.execSQL(DROP_TABLE_WORDS);
} catch (SQLException e) {
Log.e(TAG, "Error while updating database" + TABLE_WORDS, e);
}

onCreate(db);

}

因此,即使您添加了新表,版本也不会更改,直到您在代码中手动执行此操作。

关于android - 在创建数据库后创建表是否会更改 SQLite 中的数据库版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025370/

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