2010-11-22 95 views
6

根据我的理解,Content Provider是访问数据库内容的一种方式。Content_URI在内容提供商

而要访问数据库,则需要Authority部分。该授权部分由CONTENT_URI提供。因此,Content_URI是赋予数据库权限的手段。 至于CONTENT_URI被concerened,这是一般的形式

content://com.example.transportationprovider/trains/122 
______ |____________________________________|_____ |___ 
    A      B      C  D 
Where A = Content, 
     B = Authority Part 
     c = Path determining what data to request 
     D = specific data 

上面的场景是一个理想的场景,在我们传递/火车作为唯一的数据库名称。 但是,如果,我有以下CONTENT_URI:

content://com.example.transportationprovider/land/bus/133 

在这种情况下,/land/bus是路径段。

但是,然后在内部如何将这些数据存储在数据库中? 或者内容提供者如何解释这些数据?

请帮帮我。

回答

6

简单的答案是,它存储在数据库中,不过你喜欢。 ContentProvider的作者定义了路径中的所有内容以及路径到下面数据库的映射。

或多或少,您要使用的模型是您的数据库中每个表有一个路径。

有些情况下您可能需要一些额外的路径。通常,这意味着暴露数据库的一些备用“视图”...... Contacts API提供了一个很好的例子。

为什么你要执行这种雇佣制“土地/巴士”?为什么不只是“巴士”和“火车”。每个有一个SQL表? SQL表不是Java类。他们没有继承关系,这种雇佣制并不是必要的。

+0

感谢您的回复! 最后,有人敢回答我的问题。我并没有试图执行任何类型的层次结构,但这是我脑海中随机提出的问题。 – Ashish 2011-03-03 11:03:10

+0

是的,通过路径不强制雇佣制通常更容易,而是通过表关系或通过代码来实施。至于回答,我的荣幸。你有进一步的问题吗?如果我的回复完全回答您的问题,请检查它是否满足您的问题。这将有助于将它从“未回答的问题”列表中删除,以便人们可以看到它已经完成并有一个很好的答案。另外,它会帮助我赢得声誉。 :P – jcwenger 2011-03-04 21:43:50