Seite 1 von 1

[gelöst] Datensatz einfügen und anzeigen?

Verfasst: 10. November 2009 22:11
von sea_bear
Moin moin!
Ich habe folgendes Problem. Ich füge einen neuen Datensatz in meine mySQL Datenbank ein und möchte nun diesen Datensatz auch angezeigt bekommen.

Aufbau:
  • Lfd = auto_increment
    Wert1 = int
    Wert2 = QString
Wenn ich nun einen neuen Datensatz einfüge, dann verliere ich automatisch den Zeiger auf einen gültigen Datensatz. Ich muss erst einen Datensatz vor oder zurück gehen um einen Zeiger auf einen gültigen Datensatz zu erhalten. Leider ist dieser Datensatz aber dann nicht der neu eingefügt. Und genau den brauche ich, da ich die Lfd brauche. Die ist für den weiteren Programmablauf wichtig. Wie aber bekomme ich das nun hin?? Da das Feld Lfd automatisch hochzählt, weiß ich ja auch vorher nicht welchen Wert es bekommen wird. Schließlich können ja Datensätze gelöscht worden sein, womit die Anzahl der Datensätze nicht die nächste Zahl des Lfd-Feldes wiederspiegelt.

Bin für jeden Tipp Dankbar.

Tobias

Verfasst: 11. November 2009 08:18
von pfid
Vor dem insert:

select max(lfd)+1 from ....

Nach dem insert:

select max(lfd) from ....

Da du nicht geschrieben hast, ob dus über explizite Queries oder irgendein Model machst, ist das das erste was mir einfällt.

Verfasst: 11. November 2009 09:09
von upsala
Und für was gibt es dann?

Code: Alles auswählen

QVariant QSqlQuery::lastInsertId() const

Verfasst: 11. November 2009 09:34
von pfid
upsala hat geschrieben:Und für was gibt es dann?

Code: Alles auswählen

QVariant QSqlQuery::lastInsertId() const
Das klingt allerdings sehr praktisch :)

Verfasst: 11. November 2009 15:38
von sea_bear
Ich habe jetzt

Code: Alles auswählen

Lfd = query.lastInsertId().toInt();
geschrieben und es funktioniert astrein. Genau das ist das was ich wollte. Keine Ahnung warum ich das nicht selber gefunden habe. Irgendwie bin ich vollkommen falsch an die Sache ran gegangen.

Vielen Dank für die Hilfe.

Tobias