1、每次都会重建数据库的问题 ,如果在最开始就需要数据库里面有大量东西(比如地址) 那么是不希望重建的
greendao { // schemaVersion 1//数据库版本号 // daoPackage 'cn.blemed.ems.database'//设置DaoMaster、DaoSession、Dao包名 // targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 //targetGenDirTest:设置生成单元测试目录 //generateTests:设置自动生成单元测试用例 }
最开始先配置,生成相应文件DaoMaster、DaoSession、Dao后,再注释改配置,然后修改DaoMaser下面的
OpenHelper的构造方法里面的createAllTables(db, true);第二个参数为true
@Override public void onCreate(Database db) { Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); createAllTables(db, true); }
因为最后会调用
/** Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { String constraint = ifNotExists? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"USER\" (" + // "\"_id\" INTEGER PRIMARY KEY ," + // 0: id "\"name\" TEXT," + // 1: name "\"birth\" TEXT);"); // 2: birth }
为true怎判断是否有该表,有的话就不重建
2、清除缓存 可能第二次查找的实在缓存中取出的导致数据没变化
DBManager.getDaoSession().clear(); DBManager.getDaoSession().getUserDao().detachAll();用来清除缓存
3、如果对应数据库表格的类需要扩展,那么最后需要在Dao的Properties类中去掉数据库没有的那个字段
bindValues也去掉相应的字段
CREATEs数据库语句也去掉相应字段