![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Stoptyssin |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем здраствуйте. Суть проблемы: есть база данных из нескольких таблиц, таблицы отображаются через QTableModel и QTableView. Находятся на разных формах, на главной форме есть основная таблица, в которую заносится вся информация с остальных (через вторичные ключи от остальных таблиц). После выполнения запроса- вставки новой инфы в основную таблицу, необходимо сохранить данные и обновить эту таблицу. Пытался вот так:
Не получилось вывел следующее: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. Добавил следующий код в деструктор главной формы:
Выводит тоже самое, и информация в БД не сохраняется. Я уже заколебался, просмотрел примеры и кучу форумов посвященных данной проблеме. Заранее спасибо... |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
1) в первом фрагменте года я не вижу где у тебя транзакция начинается (прежде чем фиксировать или откатывать, её нужно запустить).
вывод указанного сообщения об ошибке не возможен, т.к. в приведённом фрагменте кода нет удаления соединения, видимо ты получаешь это сообщение от второго фрагмента кода. 2) Удалять соединение нужно в соответствии с документацией |
|
|
Stoptyssin |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
1) в первом фрагменте года я не вижу где у тебя транзакция начинается (прежде чем фиксировать или откатывать, её нужно запустить). вывод указанного сообщения об ошибке не возможен, т.к. в приведённом фрагменте кода нет удаления соединения, видимо ты получаешь это сообщение от второго фрагмента кода. 2) Удалять соединение нужно в соответствии с документацией C первым я вроде разобрался, вроде моя СУБД не поддерживает транзкаций))) - во я ламер. Со вторым, я вроде так и делаю, т.к удаляю соединение в деструкторе главной формы))) |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Stoptyssin |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
т.к удаляю соединение в деструкторе главной формы))) причём здесь деструктор?смотри ещё раз внимательно ссылку, в чём принципиальная разница между двумя приведёнными примерами в документации? Я так понял , в первом случае команда QSqlDatabase::removeDatabase("sales"); выполняется в одном блоке с запросом. А во втором отдельно после блока соединения и запроса, так? Но деструктор выполняется полюбому после блоков соединения БД и запросов? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
команда QSqlDatabase::removeDatabase("sales"); Важно:не команда, а функция, мало того в примере используется прямой вызов статической функции выполняется в одном блоке с запросом. не только с запросом! С чем ещё?В документации в комментарии ко второму коду подсказка |
|
|
Stoptyssin |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Все дошло))) спасибо. Но вот возник еще один вопрос. Мне надо создать таблицу в программе имя которой будет строковой переменной.
Я создаю так: query.exec("create table ' " + str + " (id integer PRUMARY KEY, value integer)' ") просто не могу правильно составить запрос, потому что если так query.exec("create table name_table (id integer PRUMARY KEY, value integer) "); то таблица создается... |
|
|
Iron Bug |
![]()
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Stoptyssin |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
просто не могу правильно составить запрос кавычки в запросе лишние убери. и не PRUMARY, а PRIMARY. А какие именно, если обинарные - убирал, не помогает((( просто не могу правильно составить запрос кавычки в запросе лишние убери. и не PRUMARY, а PRIMARY. А какие именно, если обинарные - убирал, не помогает((( одинарные |
|
|
Iron Bug |
![]()
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
одинарные, понятное дело. их там даже две, зачем - совершенно непонятно. и проверь, что у тебя в str хранится.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 15:42 |