ContentProvider, ContentResolver,Sqlite的关系

转自:http://www.marsdroid.org/bbs/forum.php?mod=viewthread&tid=1295 
理解很浅很浅,不过同样困扰了好几天。理清这个,学习后就不会太乱了。给同样迷惑的新手,有错误,请指点。


      首先说ContentProvider 和 sqlite的关系。
      它们之间的关系,是 sqlite或者其他类型的关系型数据库,文件等。总之是个可存储可读取的storage。它们都是单独的存在于某个特定的application或者prosses中。如果是你自己写的一个小程序A,或者项目A。如果里面的数据库比如是sqlite,并且你想让别的程序B在运行的时候可以操作你这个应用程序里的sqlite,比如从中获得一些数据。图片,音乐等,那么在写这个sqlite的时候,就要同时写一个ContentProvider这个A程序里。然后在写好增、删、改、查等,当然这些特定的方法都指向sqlite,这样就实现了绑定。打个不恰当地比方吧。A程序,就像是一台DIY电脑。A程序的数据库sqlite好比是主机(没有联网的)。ContentProvider就是一个网卡,如果你想让别人可以访问这台电脑。那么就装上。不想,就别装。这样清楚一些了吧,不知道理解是否正确。有错误大家指出啊!
    再说下 ContentResolver和ContentProvider的关系
    有了上面的比方,下面这个ContentResolver就好说了,也打个比方,就好比是台网络服务器(集线器),是所有网卡都要连接的地方。我们可以用ContentResolver这个唯一性的装置去调用,访问 各个 网卡ContentProvider,
  It's an interface that clients use indirectly, most generally through [url=]ContentResolver[/url] objects.  You get a ContentResolver by calling [url=]getContentResolver()[/url] from within the implementation of an Activity or other application component:
  这是文档里写的。说明它是一个接口。方法都定义好的。所有的ContentProvider的访问及操作方法都可以用它来操作。只需要,在context环境中调用[url=]getContentResolver()[/url] 便可获得一个实例,从而可操纵当前的Context环境中的数据
   本人刚学不长。理解欠佳。由于对数据库知识的匮乏,在SQL和ContentProvider这里卡了好长时间,错误地方大家一定要帮忙指出。学知识,一定要理解才行。
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值