Effizienter path, um durch eine QSqlQuery Ergebnismenge zu iterieren?

Ich bin die Abfrage einer Remote-MSSQL-server-database mit QODBC und ich habe eine Ergebnismenge zurückgegeben, aber es scheint, als ob es eine Abfrage an SQL server für jeden datasatz eins nach dem anderen sendet. Dies ist wirklich langsam für die Iteration eines Ergebnissatzes. Die Abfrage von Qt ausführen, dauert es ca. 15 Sekunden. Ich lief die gleiche Abfrage in SQL server Management Studio und es dauert 1 Sekunde, um Ergebnisse zurückzugeben. Hier ist der Code, den ich verwende:

QString connectionTemplate = "DRIVER={SQL SERVER};SERVER=server;DATABASE=db;"; QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3", "db"); db.setDatabaseName(connectionTemplate); db.setUserName("user"); db.setPassword("password"); if (db.open()) { qDebug() << "OK!"; QSqlQuery * query = new QSqlQuery(db); query->exec("SELECT [UserName]" " FROM [dbo].[Users]"); while(query->next()) { QString userName = query->value(0).toString(); qDebug() << userName; } db.close(); } else { qDebug() << db.lastError().text(); } 

Gibt es eine Möglichkeit, das gesamte Ergebnis in den memory zu erfassen und durchschleifen zu lassen? Ich würde lieber nicht die Anwendung so lange dauern, um durch eine Ergebnismenge zu iterieren.

    Ich habe herausgefunden, wie man die Geschwindigkeit der Iteration durch die Ergebnisse zu verbessern. Ich hatte vergessen, dass ich zuerst das sql vor der Ausführung vorbereiten musste und setForwardOnly muss auf true gesetzt sein.

     QSqlQuery * query = new QSqlQuery(db); query->setForwardOnly(true); query->exec("SELECT [UserName]" " FROM [dbo].[Users]");