Qt:从远程数据库传输数据时速度低

时间:2016-03-15 09:39:28

标签: sql-server database qt optimization remote-server

我在Windows7上使用Qt5 我正在编写一个Qt应用程序来替换旧的C#应用​​程序(7 - 8年前编写)。目标是从一些远程数据库连接和传输数据。远程数据库服务器是MS SQL Server 2000 我已经运行了应用程序,但我注意到与旧的C#应用​​程序相比,数据传输需要更多时间...
那么,我只是想知道什么可能导致如此低的数据传输率? 也许我忘记了一些事情或者说我做错了什么...... 这是我用来连接远程数据库的代码:

void RemoteDB::openConnection(const QString & serverIP, const QString & dbName)
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");

    db.setDatabaseName(QString("DRIVER={SQL Server};SERVER=%1;DATABASE=%2;").arg(serverIP).arg(dbName));
    db.open("user", "password");
}   

查询代码:

SqlRecord record;
QSqlQuery query(QSqlDatabase::database());
if(query.exec("SELECT * FROM VehicleStatus") == true)
{
    while(query.next() == true)
    {
        record.Vehicle    = query.value("Vehicle").toInt();
        record.Status     = query.value("Status").toInt();
        record.AppVersion = query.value("AppVersion").toString();
        record.DateTime   = query.value("DateTime").toString();
        ...
    }
}

请帮忙,任何想法?
谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

除了修剪脂肪(即只选择你需要的字段而不是*),检查你是否正在使用最好的ODBC驱动程序。

SQL Server有一个可以安装和使用的“ODBC SQL Server Native Client”,它应该比默认的ODBC驱动程序更快。它可能已经安装在您的PC上,但没有为您的数据源选择,或者您可以尝试从一些尘土飞扬的SQL Server 2000 DVD安装它(或者它当时是CD?或者 - 不是开玩笑 - 软盘< / em>?),或from a more recent SQL Server version。 YMMV。

不确定C#,但C#app可能会访问不需要ODBC的快速线驱动程序。