当使用绿色DAO有需要更新从一个模式到下一些代码定制。 对于我先前的需求是足够使用添加代码的任何新表像这样DaoMaster.java:
if(oldVersion==SCHEMA_VERSION_OLD_VERSION&& newVersion==SCHEMA_VERSION){
Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by adding language & checklist table");
boolean ifNotExists = true;
NewTableDao.createTable(db, ifNotExists);
NewTable2Dao.createTable(db, ifNotExists);
}
到目前为止它是伟大的工作。 然而,对于我目前的架构我已经加入更多的连接表之间,并从旧版本升级后,我得到的崩溃,表明新的列不存在。
是否有greendao的方式来添加新列? 我需要编写代码的SQLite在老同学的方式得到这是怎么回事? (任何代码示例欢迎的LOT)
提前致谢
- 看一看用于创建表(位于DAO类)的SQL代码。
- 提取SQL中的相关变化。
- 手动更新您的退出表。
例:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i(TAG, "Update Schema to version: "+Integer.toString(oldVersion)+"->"+Integer.toString(newVersion));
switch (oldVersion) {
case 1:
/* v1->v2: all changes made in version 2 come here */
db.execSQL("ALTER TABLE "+MyDao.TABLENAME+" ADD COLUMN 'NEW_COL_1' INTEGER;");
db.execSQL("DROP TABLE IF EXISTS 'MY_OLD_ENTITY'");
/* break was omitted by purpose. */
case 2:
/* v2->v3: all changes made in version 3 come here */
MyNewDao.createTable(db, true);
db.execSQL("ALTER TABLE "+MyDao.TABLENAME+" ADD COLUMN 'NEW_COL_2' TEXT;");
/* break was omitted by purpose. */
}
}
文章来源: Green Dao onUpdate. How can I add new columns to old tables?