2010-11-22 2 views
6

Content Provider ist meines Wissens ein Mittel, um auf Datenbankinhalte zuzugreifen.Content_URI im Inhalt Provider

Und für den Zugriff auf die Datenbank ist der Authority-Teil erforderlich. Dieser Autorisierungsteil wird von CONTENT_URI bereitgestellt. Somit ist Content_URI ein Mittel, um der Datenbank Autorität zu verleihen. Soweit CONTENT_URI concerened ist es in der Regel von der Form

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 

oben beschriebene Szenario ist ein ideales Szenario, in dem in uns/Züge als einzige Datenbanknamen übergeben. Aber was, wenn, ich habe folgendes content_uri:

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

In diesem Fall ist /land/bus die Pfadsegmente.

Aber dann intern, wie diese Daten in der Datenbank gespeichert sind? Oder wie Content Provider diese Daten interpretieren?

Bitte helfen Sie mir.

Antwort

6

Die einfache Antwort ist, dass es in der Datenbank gespeichert ist, wie Sie möchten. Alles im Pfad und die Zuordnung des Pfades zur darunterliegenden Datenbank wird vom Schreiber des ContentProviders definiert.

Mehr oder weniger, das Modell, das Sie verwenden möchten, ist, dass Sie einen Pfad pro Tabelle in Ihrer Datenbank haben.

Es gibt Fälle, in denen Sie möglicherweise zusätzliche Pfade wünschen. In der Regel bedeutet dies, dass einige alternative "Ansichten" der Datenbank angezeigt werden. Die Contacts API ist ein gutes Beispiel dafür.

Warum möchten Sie diese Art von Mietvertrag "Land/Bus" erzwingen? Warum nicht einfach "Bus" und "Train"? mit jeweils einer SQL-Tabelle? SQL-Tabellen sind keine Java-Klassen. Sie haben keine Erbschaftsbeziehungen und diese Art von Mietvertrag ist nicht notwendig.

+0

danke für Ihren Beitrag !!! Schließlich wagte jemand meine Frage zu beantworten. Ich versuchte nicht, irgendeine Art von Hierarchie durchzusetzen, aber es war die zufällige Frage, die mir in den Sinn kam. – Ashish

+0

Ja, es ist normalerweise einfacher, die Mietverwaltung nicht über den Pfad zu erzwingen, sondern über die Tabellenbeziehung oder über den Code. Was das Beantworten angeht, mein Vergnügen. Hatten Sie weitere Fragen? Wenn meine Antwort vollständig beantwortet wurde, überprüfen Sie bitte, ob Ihre Frage zufriedenstellend ist. Das wird helfen, es von der Liste der "unbeantworteten Fragen" zu entfernen, damit die Leute sehen können, dass es eine gute Antwort gibt. Außerdem wird es mir mit meinem Ruf helfen. : P – jcwenger