各位大侠,请教一个问题:
 
在contentprovider中需要定义一个URI,作为唯一标志,可以进行增,删,改,查操作。其中的增,删,改,查是通过URI对数据库进行操作,数据库存放在一个固定的路径中,我通过看代码,发现URI的字符串并不是数据库的路径,那么怎么可以通过URI对数据库进行操作?怎么把URI的字符串和数据库 这两者联系起来的。。求解。。谢谢

解决方案 »

  1. URI只是能定位到这个ContentProvider,然后通过ContentProvider的相关接口进行数据的操作的,ContentProvider能够操作什么样的数据它就指向哪!!!LZ看源码没有看明白啊!!
      

  2. [Quote=引用 1 楼 dingshaofengbinbin 的回复:]URI只是能定位到这个ContentProvider,然后通过ContentProvider的相关接口进行数据的操作的,ContentProvider能够操作什么样的数据它就指向哪!!!LZ看源码没有看明白啊!!
    [/Quote我看了一下相关例子,似乎都是通过Uri进行数据库的查找,这个URI字符串的路经和数据库的路径不同,为何能进行正确查找,他们之间怎样联系的,谢谢...
      

  3. 进/data/data把数据库导出来看看就会明白了
      

  4. 我不是说了吗,URI定位到具体的ContentProvider,这个ContentProvider能够操作什么样的数据,不就代表这个URI的指向了吗!URI并不能指向具体的数据!绿色辅助工具——《Csdn收音机》帮你轻松掌握Csdn最新动向!
      

  5.   ContentProvider是在需要将数据暴露给其他APP的时候使用,对于只在自己写的APP内的数据库操作直接使用SQLiteDatabase即可。
      URI与数据库没有直接的联系,通过ContentResolver间接访问或读写数据的另一个比较重要的原因是屏蔽了数据提供者的具体类型,可能使用SQLite数据库,也可能使用XML.....
      URI的定义参考了网址的形式,除了能达到唯一标识的目的外,还能包含很多实用信息,比如schema、数据类型、查询参数、查询路径等。
      

类似问题 »