crossplatform.ru

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

> БД сохранение и закрытие
Stoptyssin
  опции профиля:
сообщение 14.3.2012, 21:10
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем здраствуйте. Суть проблемы: есть база данных из нескольких таблиц, таблицы отображаются через QTableModel и QTableView. Находятся на разных формах, на главной форме есть основная таблица, в которую заносится вся информация с остальных (через вторичные ключи от остальных таблиц). После выполнения запроса- вставки новой инфы в основную таблицу, необходимо сохранить данные и обновить эту таблицу. Пытался вот так:

if(Gmodel->submitAll())
        {
           Gmodel->database().commit();
         }
        else
        {
            Gmodel->database().rollback();
            QMessageBox::warning(this, "", "CloseEvent!", QMessageBox::Yes | QMessageBox::No);
        }

Не получилось вывел следующее:
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.

Добавил следующий код в деструктор главной формы:

    QSqlDatabase db = QSqlDatabase::database();
         if (db.isOpen())
         {
             db.close();
             db.removeDatabase(db.connectionName());

        }

Выводит тоже самое, и информация в БД не сохраняется.
Я уже заколебался, просмотрел примеры и кучу форумов посвященных данной проблеме. Заранее спасибо...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 18.3.2012, 20:24
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Stoptyssin @ 18.3.2012, 19:03) *
т.к удаляю соединение в деструкторе главной формы)))
причём здесь деструктор?
смотри ещё раз внимательно ссылку, в чём принципиальная разница между двумя приведёнными примерами в документации?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stoptyssin
  опции профиля:
сообщение 19.3.2012, 19:17
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.1.2012
Пользователь №: 3145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 18.3.2012, 23:24) *
Цитата(Stoptyssin @ 18.3.2012, 19:03) *
т.к удаляю соединение в деструкторе главной формы)))
причём здесь деструктор?
смотри ещё раз внимательно ссылку, в чём принципиальная разница между двумя приведёнными примерами в документации?


Я так понял , в первом случае команда QSqlDatabase::removeDatabase("sales"); выполняется в одном блоке с запросом. А во втором отдельно после блока соединения и запроса, так? Но деструктор выполняется полюбому после блоков соединения БД и запросов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 23:48