我在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();
...
}
}
请帮忙,任何想法?
谢谢你的时间!
答案 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的快速线驱动程序。