1. Nimm jetzt an unserem Geotel Note - Gewinnspiel teil - Informationen zum Note findest Du hier!
  1. RED-BARON, 22.12.2009 #1
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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.