QODBC を使用してリモートの MSSQL Server データベースにクエリを実行し、結果セットが返されましたが、レコードごとに 1 つずつ SQL Server にクエリを送信しているように見えます。これは、結果セットを反復するのに非常に時間がかかります。Qt からクエリを実行すると、完了するまでに約 15 秒かかります。SQL Server Management Studio で同じクエリを実行したところ、結果が返されるまでに 1 秒かかりました。私が使用しているコードは次のとおりです。
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();
}
結果セット全体をメモリにキャプチャし、メモリ内でループする方法はありますか? アプリケーションが結果セットを繰り返すのにそれほど時間がかからないようにしたいと思います。