使用Greendao-Android

时间:2015-11-27 05:33:19

标签: android android-sqlite greendao greendao-generator

在SQLiteOpenHelper中使用onUpgrade,我可以改变表格,并添加一个默认值的新列名称。

但是当我访问活动中的特定表时,它只显示旧的列数。根据更改,它应显示4(列数)。但它只显示3。

我在onUpgrade方法中的代码:

 db.execSQL("ALTER TABLE " + MyTableDaoDao.TABLENAME + " ADD COLUMN 'VRESION_NO' INTEGER NOT NULL DEFAULT '11';");

// 我确定该表已被更改,因为当我尝试使用相同的列名再次更改它时,它会显示重复的列名sqlite异常。

获取所有列数:

 daoSession.getMyTableDao().getAllColumns().length  // returns old table count

如何在GreenDAO中获取刷新的表格详细信息? 有没有人遇到过这种情况。

提前致谢。

2 个答案:

答案 0 :(得分:1)

可能您忘记从更新的架构中重新创建dao代码。

Greendao没有使用反射或扫描数据库来创建数据库和java之间的映射。该映射由dao-generator创建。因此,如果要更新数据库模式,则有两个任务:

  1. 使用新架构重新创建实体类和daos,并增加schema-version。
  2. 在您的应用中实施更新策略,即删除所有表并重新创建它们,或添加/更改/删除自以前激活的架构版本以来已更改的列/表/索引/ ...(请参阅我的回答herehere)。

答案 1 :(得分:0)

我唯一想到的就是你从错误的表格中获取列。

您可以尝试删除表,然后使用新列重新创建它,然后它可能会注册。还认为编写动态代码更容易。 (只需将列添加到字符串列表中,然后在创建表时循环它)。