在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中获取刷新的表格详细信息? 有没有人遇到过这种情况。
提前致谢。
答案 0 :(得分:1)
可能您忘记从更新的架构中重新创建dao代码。
Greendao没有使用反射或扫描数据库来创建数据库和java之间的映射。该映射由dao-generator创建。因此,如果要更新数据库模式,则有两个任务:
答案 1 :(得分:0)
我唯一想到的就是你从错误的表格中获取列。
您可以尝试删除表,然后使用新列重新创建它,然后它可能会注册。还认为编写动态代码更容易。 (只需将列添加到字符串列表中,然后在创建表时循环它)。