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

Alles rund um die Programmierung mit Qt
Antworten
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

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

Beitrag 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
Zuletzt geändert von sea_bear am 11. November 2009 15:39, insgesamt 1-mal geändert.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Und für was gibt es dann?

Code: Alles auswählen

QVariant QSqlQuery::lastInsertId() const
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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 :)
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

Beitrag 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
Antworten