2016-03-15 4 views
1

Я использую Qt5 для Windows7.
Я пишу приложение Qt, чтобы заменить старое приложение C# (написанное 7-8 лет назад). Целью является подключение и передача данных из некоторых удаленных баз данных. Удаленные серверы БД - это MS SQL Server 2000.
У меня уже есть приложение, но я заметил, что передача данных занимает гораздо больше времени по сравнению со старым приложением C# ...
Итак, мне просто интересно, что может привести к таким низкая скорость передачи данных?
Может быть, я что-то забыл или, может быть, я делаю что-то неправильно ...
Вот код, я использую для подключения к удаленной базе данных (ы): КодQt: низкая скорость при передаче данных из удаленной базы данных

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

Вы также можете написать код запроса – Ilya

+0

@Ilya: Done! Thx :) –

+0

Существуют ли другие поля в записях или только 4, которые вы используете? – Ilya

ответ

1

Помимо обрезки жира (т. Е. Только для выбора нужных вам полей вместо *), убедитесь, что вы используете лучший драйвер ODBC.

SQL Server имеет «собственный клиент ODBC SQL Server», который вы можете устанавливать и использовать, он должен быть быстрее, чем стандартный драйвер ODBC. Возможно, он уже установлен на вашем ПК, но не выбран для вашего источника данных, или вы можете попытаться установить его с какого-нибудь пыльного DVD-диска SQL Server 2000 (или он был тогда CD или не шутил - флоппи-диски?) , или from a more recent SQL Server version. YMMV.

Не уверен в C#, но приложение C#, вероятно, имеет доступ к быстрому драйверу, который не нуждается в ODBC.