2012-08-30 77 views

回答

9

取決於兩個表之間的關係,我平時下列任何一種解決方案,我在圖書館項目,通過它,你通常會暴露所有的項目,外部可用的接口(如內容提供商)文件:

  • 如果表A包含的信息幾乎沒有興趣而沒有將表加入到表BI中,只需在查詢A時始終返回A和B的JOIN。您可以在您的庫中將文檔記錄在您要定義URI的位置到「表A」。

  • 如果表A和B包含應該可以孤立查詢的數據(我的意思是:沒有JOIN),那麼我通常會在庫中提供一個額外的URI,例如名爲A_JOIN_B_URI,查詢,返回兩個表的JOIN。再次,你在你的lib中記錄這個。

有可能比這個更多的選擇,但我認爲這些堅持最好的ContentProvider的是什麼樣的概念:這是不可知的關於什麼數據存儲背後實現的接口。在你明確使用底層數據存儲的功能的地方,現在通過看起來很奇怪的「幫助URI」可以清楚地看到這一點。

對此有何評論是受歡迎的,也許我可以學到一兩件事..

+0

您是否嘗試過使用查詢參數,而不是定義一個新的URI? –

+0

我會認爲查詢參數通常用於執行像子選擇一樣的東西嗎?這將在數​​據庫域(實際上也在ContentProvider域中,可能不完全是巧合)被實現WHERE子句覆蓋。在這種情況下,提到了JOIN,它定義了將被查詢的全部數據集(所以在SELECT中)。當然,你可以使用參數來區分數據集的JOINED或JOINED版本(它只是包裝這個決定的另一種方式),但我覺得放入不同的uri路徑可以更好地描述發生的事情。 – baske

+0

@Barum Rho:作爲我以前的評論的補充:如果你所建議的實際上是一個'事實上'的標準方式來處理這個問題,在一些其他的領域,例如HTML(其中uri經常用來指向數據), 請告訴我。我對此一無所知,所以我不知道;-)我會盡可能地遵循現有的標準(即使它們只是'事實上的')。 – baske

相關問題