Updaten eines Eintrages in der Datenbank

  • Moin,
    ich möchte gerne ein Feld in meiner SQLite Tabelle updaten. Im Prinzip funktioniert auch alles.



    Doch wenn ich es so mache wie im Bild (mit dem int idIndex) funktioniert es nicht. Wenn ich in der .update Methode allerdings statt idIndex eine Zahl eingebe, funktioniert es wieder. Auch die Ausgabe im Logcat vom idIndex funktioniert.



    Vielleicht weiß ja jemand, wo das Problem liegt. Ich bin über jede Hilfe dankbar! :)
    Vielen Dank schon mal, Merlinus

  • Hallo


    Die Id die du versuchst aus dem Cursor zu holen versuchst ist falsch. Ist nicht die Id des Datensatzes sondern positition der Spalte an der der Wert im Datensatz ist . Müsste bei dir 2 sein.


    Die ID des Datensatzes sollte bei deiner Tabelle der dritte Wert sein.



    id = cursor.getLong(2);
    id = cursor.getLong(cursor.getColumIndex(„_id“);


    Für die ID würde ich PRIMARY KEY AUTOINCREMENT benutze damit sie nicht doppelt vorkommt.



    Bei deiner Abfrage RawQuery bin ich mir nicht sicher ob du da auch an den richtigen gewünschten DatenSatz kommst. Sehe da überhaupt keine Frage Where Klausel. Also irgendetwas wonach du fragst. Somit bekommst du die gesamten Tabelle in den Cursor zurück.

  • Vielen Dank erstmal. Jetzt funktioniert es. Allerdings habe ich deine Ausführung leider nicht genau verstanden.
    Wenn ich das mit
    int idIndex = cursor.getColumIndex("_id")
    mache, liest er mir als Zahl aus, in welcher Spalte ich mich im Moment befinde, also an der dritten Stelle (also wie du gesagt hast 2).
    Und wenn ich das auf deine, die funktionierende Weise mache, lese ich die Zahl aus die in der dritten Spalte steht, welche ja meine ID ist, also in meinem Fall die 1. (hoffe ich hab das verständlich ausgedrückt)


    Ist das so richtig? Dann habe ich es grade beim ausformulieren verstanden xD


    PS: Nochmal vielen Dank! Ich finde es echt super, wie du hier jedem im Forum hilfst. Ist super, dass es Leute wie dich gibt!

  • Bei Datenbanken ist es so.
    Wenn du einen neuen Datensatz erstellst zb mit der insert Methode. Wird immer eine interne ID vergeben. Die bekommst du auch als Rückgabe Wert von der insert Methode.
    Und genau diese ID brauchst du wenn du den Datensatz updaten willst.


    Die DB vergibt immer eine neue interne ID. Nie die gleiche.


    Wenn du nun für deine Spalte ID auch das PRIMARY KEY AUTOINCREMENT betutzt ist deine Spalte immer gleich mit der internen ID.


    Es ist auch so das wenn du einen Datensatz löscht wird die alte ID nicht wider benutzt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!