Seite 1 von 1

[gelöst] QSqlTableModel rowCount()?

Verfasst: 18. Juni 2007 09:29
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

Verfasst: 18. Juni 2007 09:53
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...

Verfasst: 18. Juni 2007 12:23
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

Verfasst: 22. Juni 2007 18:37
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.