Android应用程序发布后,如何向SQLite数据库添加新列?

Android应用程序发布后,如何向SQLite数据库添加新列?,android,google-play,android-sqlite,Android,Google Play,Android Sqlite,我想向SQLite数据库添加新列,但我已经在Play Store上发布了我的应用程序,因此,如果我编辑它,用户需要卸载并重新安装该应用程序, 但我不想那样。请帮帮我,我是Android新手。您需要更改以下数据库类的方法 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "ALTER TABLE " + TABLE_SECRET + "

我想向SQLite数据库添加新列,但我已经在Play Store上发布了我的应用程序,因此,如果我编辑它,用户需要卸载并重新安装该应用程序,
但我不想那样。请帮帮我,我是Android新手。

您需要更改以下数据库类的方法

@Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String sql = "ALTER TABLE " + TABLE_SECRET + " ADD COLUMN " +
     "name_of_column_to_be_added" + " INTEGER"; 
    db.execSQL(sql);        
}     
(1) 增加(或简单地更改)您的数据库版本
(2) 它将导致
onUpgrade()
方法调用
(3) 在
onUpgrade()
方法中执行查询(用于添加新列)

提到了正确的做法

有时用户可能会从版本1.1更新版本1.5。换句话说,他们可能会跳过1.1到1.5之间的其他版本。您可能会在1.1到1.5之间多次更改数据库。因此,为了让用户从所有数据库更改中受益,您需要使用如下所示的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);
   }
 }
@覆盖
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
如果(旧版本<2){
execSQL(数据库改变团队1);
}
如果(旧版本<3){
execSQL(数据库变更团队2);
}
}

希望有帮助。

查找sqlite迁移。您可以在保留数据的同时更新表结构。如果你必须移动数据,这可能会很困难。如果我的答案有用,如果你能接受我的答案,我将不胜感激。谢谢。你的数据库不会丢失数据。提醒:当执行getWriteableDatabase或getReadableDatabase时,如果数据库的版本与旧版本不同,将调用onUpgrade。只需做一件事,卸载应用程序并重新安装。然后在android studio中打开设备文件资源管理器选项菜单推送db文件并匹配列名谢谢,但是我有另一个表,我必须用onupgrade方法为这个表写任何东西,因为你没有提到这个表,这是一个与你的问题完全匹配的通用答案。只需根据onUpgrade()方法中的需求替换查询即可。我也提到了一个博客,也有同样的功能。我不明白你的问题。是否要将列添加到现有表中,对吗?为此,您不需要在onUpgrade中再次编写onCreate。只需使用onUPgrade中的查询来更新您的表-ALTER table your_table_name ADD COLUMN your_new_COLUMN_name TEXT-我只考虑了新的列类型TEXT。您应该根据您的要求进行更改。您收到的是SQLiteDatabase实例(db),因此只需编写以下行-db.execSQL(“ALTER TABLE your_TABLE_name ADD COLUMN your_new_COLUMN_name TEXT”)感谢您的响应bro我的qst是我的数据库中有四个表我只想在一个表中添加三个冒号