Cam*_*ker 4 c++ sql-server qt odbc qtsql
我正在使用QODBC查询远程MSSQL Server数据库,并且我返回了一个结果集,但似乎它逐个向每个记录发送一个查询到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();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将整个结果集捕获到内存中并在内存中循环它?我宁愿让应用程序花费这么长时间来遍历结果集.
我想出了如何提高迭代结果的速度.我忘记了我需要在执行之前先准备好sql,并且setForwardOnly必须设置为true.
QSqlQuery * query = new QSqlQuery(db);
query->setForwardOnly(true);
query->exec("SELECT [UserName]"
" FROM [dbo].[Users]");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9094 次 |
| 最近记录: |