【问题标题】:greenDao: store data in sqlite file on AndroidgreenDao:在 Android 上将数据存储在 sqlite 文件中
【发布时间】:2014-09-10 17:38:37
【问题描述】:

在 Android 智能手机文件系统上的 sqlite 文件中存储数据的推荐方法是什么?我打算在设备重启后恢复数据。 “DaoMaster.createAllTables(db, true)”和“DaoMaster.createAllTables(db, false)”有什么区别?

目前我在 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);
}

【问题讨论】:

    标签: android sqlite persistence greendao greendao-generator


    【解决方案1】:

    我不太确定我是否理解您的问题。 “设备重启”是什么意思?恢复出厂设置?你有关注greenDao 网站上的instructions 吗?我一直在使用greenDao 并且我从未修改过生成的DaoMaster,它应该可以正常工作。看代码,当你使用默认的 daoMaster.newSession() 时,使用的 db 是创建 daoMaster 时使用的,所以你的修改应该是没有必要的。

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

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      相关资源
      最近更新 更多