【问题标题】:Qt: Low speed when transferring data from remote databaseQt:从远程数据库传输数据时速度低
【发布时间】:2016-03-15 22:37:46
【问题描述】:

我在 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();
        ...
    }
}

请帮忙,有什么想法吗?
感谢您的宝贵时间!

【问题讨论】:

  • 您还应该发布查询代码
  • 记录中是否还有其他字段,或者只是您正在使用的 4 个字段?
  • @Ilya:数据库记录有17个字段,我用了13个。(我在上面的sn-p代码中只放了4个,...不浪费空间和时间)
  • 好的,因此您可以测试是否仅选择您正在使用的 13 个字段会有所不同
  • 感谢您的建议。我进行了测试,可以看到一些改进,但我仍然落后于旧 C# 应用程序的速度。尽管如此,获取更少的远程数据还是更好/更好:) 问候!新加坡。

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


【解决方案1】:

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

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

不确定 C#,但 C# 应用程序可能可以访问不需要 ODBC 的快速线路驱动程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多