xutils 数据表替换主键、增加UNIQUE约束等等表修改

我们在手机开发过程中,使用最多的就是Sqlite数据库了,而android的开发,大部分人使用了xutils框架。
但是当我们数据库升级,想替换主键,或者增加UNIQUE约束等等的时候就会发现比较麻烦,xutils提供的接口好像很难来实现这些升级需求。其实,很多时候也不是xutils不给我们实现,而是sqlite数据库本身就不建议这么做。我们可以参照下官网的说法:


截屏2021-10-25 下午3.18.29.png

由此可见,sqlite数据库建议的升级方式,就是新建表,数据转移,并删除原来的旧表。

对应到xutils上,其实很简单,我们只需要在原有表对应的类上,将

@Table(name = "xxxxxx")
public class AAAA {
......
}

Table注解里的名字改一下,然后直接将原来的类里面的column修改好就行,这样xutils下次会自动生成一张新表,然后在数据库升级的地方,我们用原生的sql将原来表里的数据取出来,然后塞到新表里就行了:

try {
                                Cursor cursor = db.execQuery("select * from 旧表名");
                                cursor.moveToFirst();

                                do {
                                    AAAA aaaa = new AAAA();
                                    // 直接将数据取出塞到新表对应的类对象即可
                                    aaaa.set列名(cursor.getString(cursor.getColumnIndex("列名")));
                                    .......
                                    db.save(aaaa); // 保存到新表

                                } while (cursor.moveToNext());


                            } catch (DbException e) {
                                e.printStackTrace();
                            }

你可能感兴趣的:(xutils 数据表替换主键、增加UNIQUE约束等等表修改)