Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не срабатывает removeDatabase
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
maint
Qt5. Дополнительный коннект, со второй базой.
Код
QSqlDatabase cfgdb;

        cfgdb = QSqlDatabase::addDatabase("QSQLITE", "Rules");
        cfgdb.setDatabaseName(name);

        if (!cfgdb.open()) {
            return false;
        }
        QSqlQuery q(cfgdb);
        QString sql;

        sql = "SELECT " + rec.value("name").toString() + " FROM " + rec.value("pkey").toString();
        if (!q.exec(sql)) {
            return false;
        }
        if (!q.first()) {
           return false
        } else {
            QString a, b;
            a = rec.value("value").toString();
            b = q.value(0).toString();
            if (a == b)
                retcode = true;
            else
                retcode = false;
        }
        q.finish();
        q.clear();

        cfgdb.close();
        QSqlDatabase::removeDatabase("Rules");

В принципе все отрабатывает, но при вызове removeDatabase выдается диагностика
QSqlDatabasePrivate::removeDatabase: connection 'Rules' is still in use, all queries will cease to work.
FireBlack
Все просто. Перед вызовом QSqlDatabase::removeDatabase необходимо чтобы все объекты связанные с указанной базой данных были уничтожены. Об этом напрямую говорится в документации.

В вашем случае следует переписать код примерно так:
Раскрывающийся текст
{
   QSqlDatabase cfgdb;
   cfgdb = QSqlDatabase::addDatabase("QSQLITE", "Rules");
   ...
   cfgdb.close();
}

QSqlDatabase::removeDatabase("Rules");
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.