Seite 1 von 1

SqlQuery leifert falsche Anzahl Sätze

Verfasst: 24. September 2009 08:23
von toem
Guten Morgen Leute,

ich habe folgendes Problem. Ich habe unter SQLite 2 Tabellen angelegt und mit Daten gefüllt. Auf diese greife ich wie folgt zu:

Code: Alles auswählen

QSqlQuery query;
    query.exec("Select * from test");

    if (query.record().count() == 0)
....
oder

Code: Alles auswählen

QSqlQueryModel query;
    query.setQuery("Select * from [wwm_data]", db);
....
Mein Problem ist allerdings, das ich bei beiden Tabellen eine total falsche Anzahl Datensätze geliefert bekomme.

Tabelle test enthält 15 Sätze und ich bekomme 1.
Tabelle wwm_data enthält 27 Sätze und ich erhalte 7.

Übersehe ich etwas oder die Art der Abfrage in QT total falsch?

Verfasst: 24. September 2009 08:25
von Christian81
Du suchst QSqlQuery:.size() ...

Verfasst: 24. September 2009 08:32
von toem
Aber .size gibt mir -1 zurück.
Das kann aber doch auch nicht sein.

Verfasst: 24. September 2009 08:38
von AuE
Unterstütz deine DB/Treiber?
Hatte das auch => lösung mach nen select count * rein whalweise als einzelne anfrage oder in die abfrage mit rein

Verfasst: 24. September 2009 08:41
von Christian81
toem hat geschrieben:Aber .size gibt mir -1 zurück.
Ein bischen nachschauen wäre nicht schlecht...
http://doc.trolltech.com/4.4/qsqldriver.html#hasFeature

Verfasst: 24. September 2009 08:42
von toem
Ich hab was, das funktioniert anscheinend:

Code: Alles auswählen

QSqlQueryModel query;
    query.setQuery("Select * from [wwm_data]", db);
    if (query.rowCount() ....[quote][/quote]

Verfasst: 25. September 2009 16:16
von palto
toem hat geschrieben:Ich hab was, das funktioniert anscheinend:

Code: Alles auswählen

QSqlQueryModel query;
    query.setQuery("Select * from [wwm_data]", db);
    if (query.rowCount() ....[quote][/quote]


Stimmt nicht immer!!
Du musst mit QSqlDriver::hasFeature() überprüfen ob rowCount unterstützt wird (siehe Dokumentation: http://doc.trolltech.com/4.5/qsqlquerym ... l#rowCount)