如何在新版本中升级数据库表而不会丢失Androidstudio中的旧版本数据?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (92)

我有一个我在SQLite中构建的数据库,并且它工作正常。我想升级数据库并添加一个新列。

这是我的代码升级数据库,但他们不工作,没有卸载旧版本的应用程序。

static class DBinfo extends SQLiteOpenHelper{

    private static final String dataBase_Name = "dbase";
    private static final String tableName = "mytable";
    private static final int dataBase_Version = 2;
    private static final String ID = "id";
    private static final String name = "name";
    private static final String nrx = "nrx";
    private static final String dane = "dane";
    private static final String mang = "mang";
    private static final String sal = "sal";
    private static final String roj = "roj";
    private static final String DROP_TABLE = "DROP TABLE IF EXISTS "+tableName;
    private static final String CREATE_TABLE = "CREATE TABLE "+tableName+
            "("+ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+name+" VARCHAR(255), "+nrx+" VARCHAR(255), "+dane+" VARCHAR(255), "+mang+" VARCHAR(255), "+sal+" VARCHAR(255),"+roj+" VARCHAR(255));";
    private Context context;


    public DBinfo(Context context) {
        super(context, dataBase_Name, null, dataBase_Version);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        try{
            db.execSQL(CREATE_TABLE);
           // Toast.makeText(context,"table created",Toast.LENGTH_LONG).show();
        }catch (SQLException e){
         //   Toast.makeText(context,"due to: "+e,Toast.LENGTH_LONG).show();
        }

    }

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

        if (newVersion > oldVersion){
             db.execSQL("ALTER TABLE " +tableName+ " ADD COLUMN " +roj+ " TEXT");
        }
    }
 }

该方法OnUpgrade代码无法工作。

提问于
用户回答回答于

该消息与你的数据库或对其的更改无关。这意味着你正试图安装与现有APK具有相同包装的APK,但签名不同。你的新应用程序甚至没有安装。

我不能说为什么你的签名是不同的,但考虑你可能对你的构建系统或你用来签署你的构建的证书做了哪些修改。

你是否尝试在发行版签名的APK之上安装带调试签名的APK?

扫码关注云+社区

领取腾讯云代金券