Android:通过Content Provider访问SQLite数据库还是实现DAO?

时间:2012-11-24 16:03:14

标签: android database sqlite android-contentprovider dao

我想知道访问我的应用程序数据库的最佳方法是哪种:使用内容提供程序,或手动实现我的DAO? 根据我最近的调查,似乎内容提供商,即使是内部应用程序,也是可取的,但我不确切知道每种方法的缺点是什么。 你能就此提出一些反馈意见吗?

3 个答案:

答案 0 :(得分:13)

如果您担心关闭或锁定数据库,我更喜欢使用ContentProvider 。 查看Simple Content Provider for db operations

答案 1 :(得分:9)

来自Google Docs

  

开始构建之前

在开始构建提供程序之前,请执行以下操作:   以下:

     

决定是否需要内容提供商   您需要构建内容   提供商,如果您想提供以下一项或多项功能:

     
      
  • 您希望向其他应用程序提供复杂的数据或文件。
  •   
  • 您希望允许用户将应用中的复杂数据复制到其他应用中。
  •   
  • 您希望使用搜索框架提供自定义搜索建议。
  •   
     

如果使用的话,您需要提供商使用SQLite数据库   完全在你自己的应用程序中。

但是在阅读本文和其他一些帖子时我感到有些困惑。如果只是由您自己的应用程序使用内容提供程序事件,它是否有意义?

答案 2 :(得分:5)

来自ContentProvider文档:

内容提供商是Android应用程序的主要构建块之一,为应用程序提供内容。它们封装数据并通过单个ContentResolver接口将其提供给应用程序。只有在需要在多个应用程序之间共享数据时,才需要内容提供程序。例如,联系人数据由多个应用程序使用,并且必须存储在内容提供商中。如果您不需要在多个应用程序之间共享数据,则可以直接通过SQLiteDatabase使用数据库。

在我看来,如果您不打算与其他应用程序共享数据,则不需要内容提供商。

链接:http://developer.android.com/reference/android/content/ContentProvider.html