![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Ivan.qrt |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 25.7.2012 Пользователь №: 3466 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброго времени суток, собственно такая ситуация: создал класс для работы с MySQL с двумя приватными полями :
Инициализирую их в конструкторе, все проходит нормально, workDB.open() возвращает true, создается новый объект QSqlQuery, после чего, почему-то сразу же вызывается деструктор, хотя объект после этого ещё используется, а деструктор никто не вызывал. Если закомментировать деструктор, то соединения просто тихо закрываются. Собственно код: http://pastebin.com/qrXXHSyU http://pastebin.com/xq4C4wxr http://pastebin.com/iqvUMJDs Вывод такой db opened successfull. query created. Entering sqlWorker::~sqlWorker() ... QSqlDatabasePrivate::removeDatabase: connection 'workDB' is still in use, all queries will cease to work. workDB status : CLOSED Entering sqlVersion(). Sending query->exec() Программа неожиданно завершилась. Платформа : winXP 32 |
|
|
![]() |
Гость_Гость_* |
![]()
Сообщение
#2
|
Гости ![]() |
Как минимум query должен быть удален. Кстати нафига он вообще создается на куче ?
|
|
|
Гость_Гость_* |
![]()
Сообщение
#3
|
Гости ![]() |
Смотри внимательнее:
sqlWorker::sqlWorker(const QString& hostName, const QString& dbName, const QString& userName, const QString& pwd) далее workDB = QSqlDatabase::addDatabase("QMYSQL", CONNECTION_NAME); и вывод: Entering sqlWorker::~sqlWorker() ... QSqlDatabasePrivate::removeDatabase: connection 'workDB' is still in use, all queries will cease to work. QSqlDatabase::addDatabase("QMYSQL", CONNECTION_NAME); не может открыть базу по имени CONNECTION_NAME. Эта переменная не задана ранее. Функция QSqlDatabase QSqlDatabase::addDatabase ( const QString & type, const QString & connectionName = QLatin1String( defaultConnection ) ) [static] не выполняется ввиду отсутствия второго аргумента и происходит вызов деструктора: Entering sqlWorker::~sqlWorker() ... QSqlDatabasePrivate::removeDatabase: connection 'workDB' is still in use, all queries will cease to work. Вроде бы так |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.7.2025, 11:52 |