在新版本中升级数据库表而不会丢失android studio中的旧版本数据

时间:2018-05-29 23:11:05

标签: android android-studio android-sqlite

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

当我点击RUN时,他们给了我这个:

Photo

这是我升级数据库的代码,但如果没有卸载旧版本的应用程序,它们就无法运行。

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代码无法正常工作,只要他们给我第一张照片。

我在互联网上搜索的时间太长但我没有解决它。

1 个答案:

答案 0 :(得分:0)

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

我不能说为什么您的签名不同,但请考虑您对构建系统或您用于签署构建的证书所做的更改。

您是否尝试在发布签名的APK之上安装调试签名的APK?