Доброго времени суток. Прошу помощи.
Имеется написанное на Qt приложение, использующее драйвер QDB2. Приложение корректно функционирует на компьютере, на котором я ее разрабатывал. При переносе на другой компьютер возникли проблемы.
Для начала опишу структуру каталога с программой:
-TelephoneAuto.exe
-QtXml4.dll
-QtSql4.dll
-QtGui4.dll
-QtCore4.dll
-mingwm10.dll
-libgcc_s_dw2-1.dll
-sqldrivers\qsqldb24.dll
При такой структуре каталога при соединении с БД программа выдает ошибку: "Driver not loaded Driver not loaded". Для этой проблемы я нашел временное тупое решение, но все же... Я скопировал все dll'ки из каталога с установленной СУБД IBM DB2 в каталог моего приложения.
Но теперь при соединении с СУБД программа выдает ошибку с пустым содержанием. Т.е. в исходнике срабатывает ветка
но метод db.lastError().text() выдает пустую строку.
При этом также обратил внимание, что завершение приложения вешает программу (опять же, на машине разработчика все работало).
Привожу участки важного кода.
Соединение с БД:
QSqlDatabase db = QSqlDatabase::addDatabase("QDB2");
db.setHostName(connDia.getHost());
db.setDatabaseName(connDia.getNameDb());
db.setUserName(connDia.getLogin());
db.setPassword(connDia.getPasswd());
if (!db.open())
this->insertMess(QObject::tr("Ошибка соединения с БД: ") + db.lastError().text());
else {
this->insertMess(QObject::tr("Соединение с БД установлено"));
...
}
Завершение приложения:
void MainWindow::slotTerminateApp()
{
QSqlDatabase db = QSqlDatabase::database();
QMessageBox confirm;
confirm.setText(QObject::tr("Подтверждение"));
confirm.setInformativeText(QObject::tr("Завершить работу приложения?"));
confirm.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
confirm.setDefaultButton(QMessageBox::Ok);
if (confirm.exec() == QMessageBox::Ok) {
if (db.isOpen())
db.close();
app->exit();
}
}
Прошу найти ошибку и добавить тем самым мне в башку знаний=)
P.S. в заголовочном файле этого класса переменной
нет