crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в не срабатывает removeDatabase
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
FireBlack Дата 15.8.2015, 1:26
  Все просто. Перед вызовом QSqlDatabase::removeDatabase необходимо чтобы все объекты связанные с указанной базой данных были уничтожены. Об этом напрямую говорится в документации.

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

QSqlDatabase::removeDatabase("Rules");
maint Дата 2.8.2015, 8:08
  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.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 1.4.2020, 16:10