crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 3:11