Android中的SQLite迁移

时间:2017-04-28 15:52:04

标签: android sqlite ormlite

我在Android上使用ORMLite,我有一个具有两个String属性的实体(每个属性都存储在数据库中),对于迁移,我的实体已经更改,并且2个字段已合并到List中。我该如何处理这种迁移?

迁移前的实体:

@DatabaseTable
public class MyEntity
{
    @DatabaseField(generatedId = true)
    private int id;
    @DatabaseField
    private String att1;
    @DatabaseField
    private String att2;
}

迁移后的实体:

@DatabaseTable
public class MyEntity
{
    @DatabaseField(generatedId = true)
    private int id;
    @DatabaseField(dataType = DataType.SERIALIZABLE)
    private ArrayList<String> list;
}

我已经查看了数据库的结构,在迁移之前att1和att2是VARCHAR,并且在迁移列表之后是​​BLOB类型。我正在使用扩展OrmLiteSqliteOpenHelper的类来进行迁移,但我不知道如何在新迁移的数据库的list列中传递att1和att2的值。

1 个答案:

答案 0 :(得分:0)

  

...迁移我的实体已更改且2个字段已合并到List中。我该如何处理这种迁移?

哇,这很难做到。您将不得不阅读每个实体,从listatt1创建att2字段,然后调用dao.update(...)以使用列表BLOB字段保存每个实体

类似的东西:

 for (MyEntity entity : dao.queryForAll()) {
    List<String> list = new ArrayList<>();
    if (add1 != null) {
        list.add(add1);
    }
    if (add2 != null) {
        list.add(add2);
    }
    entity.setList(list);
    dao.update(entity);
 }