Uri in ContentProvider

0

0xnull

Neues Mitglied
0
Hallo zusammenm

leider verwirrt mich die URI-Logik in Content Provider etwas. Ich habe eine Datenbank, die aus drei Tabellen besteht. Für diese möchte ich einen ContentProvider implementieren.

Lege ich nun für jede Tabelle eine URI an oder für jeden Abfrage-Typen? Die Daten machen nämlich nur Sinn, wenn ich sie durch JOINs bekomme. Einige Tabellen werden nie alleine abgefragt.

Vielen Dank
 
Zuletzt bearbeitet:
Schönen guten Abend.

Der dritte wert ist ein int nach dem du dann in deiner query oder insert Methode deinen switch Zweig auswerten kannst.
Jedenfalls habe ich das so verstanden und umgesetzt :cool2:

Code:
//STATIC INT für switch cases erstellen
private static final int BENUTZER_DIRECTORY = 10;
private static final int BENUTZER_ITEM = 20;

STATIC INT für switch cases erstellen
//UriMatcher sURIMatcher
sURIMatcher.addURI(AUTHORITY, BenutzerTable.CONTENT_DIRECTORY, BENUTZER_DIRECTORY);
sURIMatcher.addURI(AUTHORITY, BenutzerTable.CONTENT_DIRECTORY+"/#", BENUTZER_ITEM);

@Override
public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        switch(sURIMatcher.match(uri)) {
        
        //BENUTZER
        case BENUTZER_DIRECTORY:
            return dbhelper.getReadableDatabase().query(BenutzerTable.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
        case ABENUTZER_ITEM:
        {
            long id = ContentUris.parseId(uri);
            String _selection = "(" + BenutzerTable.Columns._ID + "=" + id + ")";
            if (selection!=null && !selection.isEmpty())
              {
                  _selection = _selection + " and "+selection;
              }
            return dbhelper.getReadableDatabase().query(BenutzerTable.TABLE_NAME, projection, _selection, selectionArgs, null, null, sortOrder);
        }
Hoffe das hilft dir irgendwie weiter.

Gruß
derjens
 
Zuletzt bearbeitet:
Hey,

danke für deine Antwort. Wundere dich nicht, aber anscheind hat sich meine Threadänderung mit deiner Antwort überschnitten. Deine Antwort hilft mir trotzdem weiter.

Wie sieht es denn mit dem Anlegen einer URI aus? Für jede Tabelle oder für jede mögliche Query?

Wenn ich eine Query habe, die einen JOINT über drei Tabellen erfordert, dann muss es doch für die Query eine URI geben, denn nur so kann ich im switch Statement in den entsprechenden Zwei springen!?

Danke
 
Hallo Du

Mit den JOINs kann ich dir leider nicht so wirklich helfen,
da ich meine JOINs alle über SQLite VIEWs realisiert habe.

Würde mich aber auch mal Interessieren wie man das vielleicht besser lösen kann.
Aber mit den VIEWs bin ich eigentlich ganz zufrieden.

Gruß
derjens
 

Ähnliche Themen

J
  • JennyLessner
Antworten
1
Aufrufe
703
jogimuc
J
D
Antworten
23
Aufrufe
2.552
Data2006
D
OnkelLon
Antworten
13
Aufrufe
1.986
OnkelLon
OnkelLon
Zurück
Oben Unten