Seite 1 von 1

QSqlQuery, SQLite: Ansatz für COUNT(*) query?

Verfasst: 26. März 2010 17:04
von -=Freaky=-
hi,

ich habe noch keine lange erfahrung in der programmierung mit DBs, arbeite aber momentan mit Qt und einer SQLite datenbank.
nun habe ich ein query folgender form:

Code: Alles auswählen

"SELECT COUNT(*) FROM MyTable WHERE X1=x1 AND X2=x2"
d.h., ich sollte eine zahl (int) zurückbekommen.

mein problem ist, dass ich nicht weiß und keine richtigen tips finden konnte, wie ich das am besten in Qt mache.

mein einziger funktionierender ansatz ist folgender:

Code: Alles auswählen

QString sql = QString("SELECT COUNT(*) FROM MyTable WHERE X1=%1 AND X2=%2").arg(m_x1).arg(m_x2);
QSqlQuery query(sql, m_sqlDB);
if(!query.exec())
  return -1;

query.seek(0, false);
return query.value(0).toInt();
das funktioniert, wie gesagt, allerdings dauert ein aufruf etwa 30 bis 60 sekunden, was offensichtlich zu lange und daher offensichtlich quark ist ...

allerdings weiss ich trotzdem nicht, wie ich es besser loesen koennte.

ich wuerde mich freuen, wenn mir jemand einen denkanstoss/tip/link/... geben koennte.

vielen dank schon einmal!

mfg
julian

Verfasst: 26. März 2010 19:45
von franzf
Keine Ahnung was es ist, der Query ist in Ordnung.
Kannst du mal debug-Ausgaben vor und nach dem Abschicken des Query einbauen, dass du siehst ob es wirklich da hängt.
Ansonsten kannst du auch über die sqlite-Konsole (einfach in nem terminal sqlite datenbankfile.db eingeben) deine Queries testen. Vielleicht liegt es auch an einer verbuggten sqlite-Version, die dein Qt verwendet...