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
  опции профиля:
сообщение 19.3.2012, 19:33
Сообщение #2


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

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

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




Репутация:   94  


Цитата(Stoptyssin @ 19.3.2012, 21:17) *
команда QSqlDatabase::removeDatabase("sales");
Важно:
не команда, а функция, мало того в примере используется прямой вызов статической функции
Цитата(Stoptyssin @ 19.3.2012, 21:17) *
выполняется в одном блоке с запросом.
не только с запросом! С чем ещё?


В документации в комментарии ко второму коду подсказка
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stoptyssin
  опции профиля:
сообщение 19.3.2012, 20:08
Сообщение #3


Студент
*

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

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




Репутация:   0  


Все дошло))) спасибо. Но вот возник еще один вопрос. Мне надо создать таблицу в программе имя которой будет строковой переменной.
Я создаю так:

query.exec("create table ' " + str + " (id integer PRUMARY KEY, value integer)' ")

просто не могу правильно составить запрос, потому что если так

query.exec("create table name_table (id integer PRUMARY KEY, value integer) ");
то таблица создается...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.5.2025, 14:23