使用绿色DAO与内容提供商

时间:2014-09-27 09:15:28

标签: android database orm android-sqlite greendao

我打算在我的项目中使用GreenDAO。我已经通过创建测试项目来测试它。但是,我有几个要求,我需要完成。

  1. 我的应用程序的数据库将被加密。为此,我们计划使用SQLCipher。我找到了link。我正在研究它,但有兴趣知道原始GreenDAO项目中有什么可用。

  2. 由于我的应用程序会将数据同步到服务器或从服务器同步数据,因此我将使用SyncAdapter,因为我不想自己完成所有已经由Android框架完成的重量级操作。但它需要Content Provider才能使用。那么,我如何将GreenDAO与Content Provider一起使用。

  3. 更新2

    我的项目有七个实体。我在实体上使用了addContentProvider()。并生成七个不同的内容提供商。有没有办法在单个内容提供商中拥有所有sqlite表?

1 个答案:

答案 0 :(得分:9)

我有一个使用greenDao和内容提供商运行的项目。首先我使用ProviGen生成内容提供程序并使用内容解析器进行查询,但随后项目变得非常大,所以我决定实现greenDAO,我所做的就是使用在provigen中创建的contentProvider来获取从它的数据库,所以现在我有contentProvider和provigen附加到同一个数据库。我鼓励您创建ContentProvider并将daoMaster附加到使用它生成的数据库。这是我在onCreate应用程序类中使用的代码片段:

private static DaoSession daoSession;
public void onCreate(){
SQLiteOpenHelper myAppOpenHelper = new ProvigenContentProvider().openHelper(this); //ContentProvider created previously
SQLiteDatabase db = myAppOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}

之后才使用greendao:

public DaoSession getDaoSession(){
        return daoSession;
}

在那里你可以同时拥有contentProvider和greenDao。如果尚未启动项目,请手动创建内容提供程序,并在此处创建具有相同代码的DaoMaster。祝你好运