2010-11-22 116 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