2014-09-10 32 views
1

将数据存储在位于Android智能手机的文件系统上的sqlite文件中的建议方式是什么?我打算在设备重新启动后恢复数据。 “DaoMaster.createAllTables(db,true)”和“DaoMaster.createAllTables(db,false)”有什么区别?greenDao:将数据存储在Android上的sqlite文件中

目前我使用这个代码在MainActivity.java:

db = SQLiteDatabase.openOrCreateDatabase(new File(getExternalFilesDir(null).getPath(), 
      "opendao.sqlite"), null); 
daoMaster = new DaoMaster(db); 
DaoMaster.createAllTables(db, true); 
daoSession = daoMaster.newSession(db); 
locationEntityDao = daoSession.getLocationEntityDao(); 
locationTraceEntityDao = daoSession.getLocationTraceEntityDao(); 
photoEntityDao = daoSession.getPhotoEntityDao(); 
photosEntityDao = daoSession.getPhotosEntityDao(); 
poiEntityDao = daoSession.getPoiEntityDao(); 
primitiveAttributesEntityDao = daoSession.getPrimitiveAttributesEntityDao(); 

我不得不修改生成DaoMaster.java:

public DaoSession newSession(SQLiteDatabase db) { 
    return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); 
} 

回答

0

我不太清楚,如果我理解你的题。 “设备重启”是什么意思?工厂能否恢复?您是否在greenDao网站上关注instructions?我一直在使用greenDao一段时间,并且我从不修改生成的DaoMaster,它应该在生成时工作。读取代码时,当您使用默认的daoMaster.newSession()时,使用的数据库是daoMaster创建中使用的数据库,因此您的修改不应该是必需的。

对于第二个问题,如果你按照生成的代码,你会发现在createAllTables(SQLiteDatabase db,boolean ifNotExists)中设置true或false ifNotExist参数之间的区别。这个布尔值确定数据库中的每个表是否应该在已经存在的情况下创建。设置为true,如果表已存在于数据库中,则此CREATE命令将不起作用。

相关问题