1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Cursor ( enthält "falsche" Daten )

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von RED-BARON, 22.12.2009.

  1. RED-BARON, 22.12.2009 #1
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    Hallo Ihrs, Frohes wichteln die Tage,

    aber zuvor noch ne Frage von mir :D

    Cursor:
    ich frage eine sqlite-tabelle ab

    mOldRessources
    = mSQL.rawQuery("select ts, name from " + table, null);

    danach lade ich neue Daten vom Server:

    downloadTable(table);

    und frage die Tabelle erneut ab mit:

    mNewRessources = mSQL.rawQuery("select ts,name from " + table, null);


    zu meinem Erstaunen ist, dass

    mOldRessources.getString(0);
    und
    mNewRessources
    .getString(0);

    die gleichen Werte enthalten.

    Sieht so aus als ob die Cursor keine tiefen Kopien der Werte enthalten.
    Wenn dem so ist bau ich meine Logik um, kein Problem :)

    Ist es so, oder hab ich ein Bug in meinem Proggi ?

    ahoi, RB
     
  2. SeraphimSerapis, 22.12.2009 #2
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    machst du eine korrekte zuweisung der daten auf table?

    für mich sieht das folgend aus:
    du hast dir eine methodedownloadTable(Table table) { .. } geschrieben, die neue Werte für table runterläd.

    hast du in der Methode selbst noch so etwas wie table = .. ?

    oder hast du einfach den scope nicht beachtet?
     
  3. RED-BARON, 22.12.2009 #3
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    hm, danke erstmal,

    nein, "table" ist wirklich nur ein String mit dem Namen der Tabelle
    lokal und remote ( gleicher Name ). Ich frage also tatsächlich aus der
    lokalen SQLite DB z.B. eine Tabelle "bestellungen" ab. Wollte die Daten
    in einem Cursor-Objekt "halten" und dann die lokale Tabelle "Bestellungen"
    mit dem Inhalt einer Remote-Tabelle "Bestellungen" füllen. Danach wollte
    ich einen neuen Cursor füllen um die Daten zu vergleichen.

    Es zeigte sich aber, beide Cursor haben den gleichen Inhalt nach der ganzen Aktion.

    Meine Lösung schaut nun so aus:
    ich hole mir die Daten aus der lokalen Tabelle und lade diese in einen
    Vector, welcher Objekte mit den Daten aus den Datensätzen enthalten.

    Dann lade ich mir die neuen Daten und erstelle einen neuen Cursor und
    kann nun die im Vector gesammelten Objekte ( Daten ) mit den neuen
    vergleichen.

    Praktisch hats nix mit Bestellungen zu tun sondern mit Reduktion der
    Datenmengen :D

    Tabelle: resourcen < tabname, timestamp >
    immer wenn in der Remote-DB Werte einer Tabelle geändert werden wird
    das in der "resourcen" markiert. Das Gerät läd sich immer die "resourcen"
    runter. Sichert vorher die alten Daten und schaut nacher welche anderen
    Tabellen noch synchronisiert werden müssen.
     

Diese Seite empfehlen