Qt:从远程数据库传输数据时速度低
Qt: Low speed when transferring data from remote database
我在 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();
...
}
}
请帮忙,有什么想法吗?
感谢您的宝贵时间!
除了精简(即只选择您需要的字段而不是 *
),检查您是否使用了最好的 ODBC 驱动程序。
SQL服务器有一个"ODBC SQL Server Native Client"可以安装使用,应该比默认的ODBC驱动快。它可能已经安装在您的 PC 上,但没有选择作为您的数据源,或者您可以尝试从一些布满灰尘的 SQL Server 2000 DVD(或者当时是 CD?或者 - 不是开玩笑 - 软盘 ?),或from a more recent SQL Server version。 YMMV.
不确定 C#,但 C# 应用程序可能可以访问不需要 ODBC 的快速驱动程序。
我在 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();
...
}
}
请帮忙,有什么想法吗?
感谢您的宝贵时间!
除了精简(即只选择您需要的字段而不是 *
),检查您是否使用了最好的 ODBC 驱动程序。
SQL服务器有一个"ODBC SQL Server Native Client"可以安装使用,应该比默认的ODBC驱动快。它可能已经安装在您的 PC 上,但没有选择作为您的数据源,或者您可以尝试从一些布满灰尘的 SQL Server 2000 DVD(或者当时是 CD?或者 - 不是开玩笑 - 软盘 ?),或from a more recent SQL Server version。 YMMV.
不确定 C#,但 C# 应用程序可能可以访问不需要 ODBC 的快速驱动程序。