[gelöst] QSqlTableModel rowCount()?

Alles rund um die Programmierung mit Qt
Antworten
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

[gelöst] QSqlTableModel rowCount()?

Beitrag von dontinelli »

Hallo zusammen

Ich möchte aus einer MySQL-Tabelle den Eintrag in der letzten Zeile auslesen. Leider habe ich bis jetzt nichts in der Doku gefunden. Habe ich Tomaten auf den Augen oder gibt es wirklich kein rowCount() oder eine ähnliche Möglichkeit darauf zurückzugreifen?

Vielleicht noch das: Ich möchte einen lokalen Datensatz mit der Tabelle abgleichen, wobei die ID als Singulärschlüssel dienen soll und deshalb eindeutig sein muss. Um nun eine neue ID vergeben zu können, muss ich wissen, welches die letzte war.

Cheers
DonTinelli
Zuletzt geändert von dontinelli am 22. Juni 2007 18:38, insgesamt 1-mal geändert.
marco
Beiträge: 41
Registriert: 6. Dezember 2006 23:46
Wohnort: Niederrhein

Beitrag von marco »

Guten Morgen,

sofern du unter Qt4 mit models arbeitest - was ich dir empfehle - steht dir grundsätzlich die Methode QSQLQueryModel::rowCount() zur Verfügung, um die Anzahl der abgefragten Datensätze zu ermitteln.

Mit der Methode QSQLDriver::hasFeature() kannst du übrigens ermitteln ob deine Datenbank dieses Feature überhaupt unterstützt (SQLite ist aber die einzige soweit ich weiß, die es nicht tut).

QSqlQuery::lastInsertId() kann dir u.U. beim zweiten Problem weiterhelfen. Ob deine Datenbank das kann, sagt dir wiederrum QSQLDriver::hasFeature().
Grundsätzlich sollte der Primärschlüssel aber allein Aufgabe der Datenbank sein!

Steht aber auch alles in der Doku...
Gruß, Marco
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn du damit andeuten willst, daß du die gesamte Tabelle mit SELECT * ... holst und dann nur die letzten Datenzeile abfragst, verweise ich drigendst auf SQL-Grundlagen
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Vielen Dank für eure Antworten!

@Upsala: Nein, ich hatte die Tabelle nicht mit "SELECT", sondern habe sie in ein QSqlTableModel geladen. Sorry, habe ich vergessen zu sagen.

Nach dem Beschrieb von marco habe ich nun noch ein QSqlQuery eingerichtet und habe das Problem so gelöst.
Antworten