Auslesen der autoincrement-column funktioniert nicht

  • Hallo Leute,


    ich habe in meiner SQLITE-Datenbank eine Tabelle mit einer AUTOINCREMENT-Spalte (INTEGER PRIMARY KEY AUTOINCREMENT -> ID)


    Wenn ich Datensätze in die Tabelle einfüge kommt es sehr sporadisch vor, dass die insert-Funktion nicht die AUTOINCREMENT-ID sondern eine hohe negative Zahl zurück gibt: z. B. -14073748835558


    Java
    long insertId = database.insert(ZahlungTableHelper.TABLE_NAME, null, values);

    Das Query schlägt nicht fehlt, es kommt keine Exception, der Datensatz wird auch in die Datenbank eingefügt (mit positiver und korrekter ID). Woran könnte es liegen, das SQLLITE anstatt der richtigen ID eine negative (siehe oben) zurück gibt? Verwendet wird Android 2.3.4 (Kundenvorgabe).



    Viele Grüße



    hs1

  • Das ist eigentlich nicht möglich, denn die Indizes die noch auf der Tabelle liegen sind alle nicht eindeutig/unique. Wenn das insert fehlschlägt müsste die Methode laut Doku -1 zurückliefern (the row ID of the newly inserted row, or -1 if an error occurred), tut sie aber nicht. Das Einfügen funktioniert auch. Sehr seltsames verhalten.

  • Hast du die ID auch mit unterstrich definiert "_id" ?
    Die Id überbietet du nicht zufällig mit im values Objekt, wenn ja das darfst du nicht.

    Ja, die id ist mit Unterstrich definiert und wird nicht manuell gesetzt.



  • Habe da im Moment keine Idee was das sein könnte. Ein Fehlverhalten ist ja nicht zu erkennen.
    Ein Fehler wäre ja bei -1 wie du sagst. Ehrlich gesagt habe ich das nie getestet was da zurück gegeben wird teste auf -1 und mache weiter. Muss ich mir bei meiner Datenbank mal anschauen.
    Im Moment weiß ich auch nicht weiter.


    Ps würde es der alten Android Version in die Schuhe schieben. Da wird wohl ein Bug drin sein. Arbeiten tut die SQL ansonsten richtig. Habe leider erst jetzt gesehen das du unter so einer alten Version arbeitest oder musst. Wenn du die id sicher brauchst nach dem Import kannst du nur nochmal eine Abfrage machen.
    Teste das Programm mal unter einer neueren Android Version ob es da auch so ist.

Jetzt mitmachen!

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