这是我的生成器类
public class Generator {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1, "app.abc.db.dao");
createAbcDB(schema);
}
private static void createAbcDB(Schema schema) throws IOException, Exception {
Entity abc = schema.addEntity("Abc");
abc.addIdProperty();
abc.addShortProperty("name");
}
}
这是我从 dao 会话中获取 abc dao 的代码。这工作正常。
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(SurveyActivity.this, "abc.db", null);
SQLiteDatabase db = devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession(IdentityScopeType.None);
abcDao = daoSession.getAbcDao();
我又添加了一列
abc.addShortProperty("email");
在生成器中创建AbcDB 到新版本的应用程序。一旦用户得到更新,他们就会得到 sql 异常,说没有找到列。因为我正在调用新的登录
dropAllTables(db, true);
onCreate(db);
但问题是我已经给了一次登录,用户总是会在从 Play 商店升级时进入登陆屏幕。所以我不知道用户是否为了删除和创建所有表而升级了应用程序。
所以我的问题是如何知道我的桌子已经改变了?