БД сохранение и закрытие |
Здравствуйте, гость ( Вход | Регистрация )
БД сохранение и закрытие |
Stoptyssin |
14.3.2012, 21:10
Сообщение
#1
|
Студент Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем здраствуйте. Суть проблемы: есть база данных из нескольких таблиц, таблицы отображаются через QTableModel и QTableView. Находятся на разных формах, на главной форме есть основная таблица, в которую заносится вся информация с остальных (через вторичные ключи от остальных таблиц). После выполнения запроса- вставки новой инфы в основную таблицу, необходимо сохранить данные и обновить эту таблицу. Пытался вот так:
Не получилось вывел следующее: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. Добавил следующий код в деструктор главной формы:
Выводит тоже самое, и информация в БД не сохраняется. Я уже заколебался, просмотрел примеры и кучу форумов посвященных данной проблеме. Заранее спасибо... |
|
|
Litkevich Yuriy |
18.3.2012, 11:55
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
1) в первом фрагменте года я не вижу где у тебя транзакция начинается (прежде чем фиксировать или откатывать, её нужно запустить).
вывод указанного сообщения об ошибке не возможен, т.к. в приведённом фрагменте кода нет удаления соединения, видимо ты получаешь это сообщение от второго фрагмента кода. 2) Удалять соединение нужно в соответствии с документацией |
|
|
Stoptyssin |
18.3.2012, 17:03
Сообщение
#3
|
Студент Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: 0 |
1) в первом фрагменте года я не вижу где у тебя транзакция начинается (прежде чем фиксировать или откатывать, её нужно запустить). вывод указанного сообщения об ошибке не возможен, т.к. в приведённом фрагменте кода нет удаления соединения, видимо ты получаешь это сообщение от второго фрагмента кода. 2) Удалять соединение нужно в соответствии с документацией C первым я вроде разобрался, вроде моя СУБД не поддерживает транзкаций))) - во я ламер. Со вторым, я вроде так и делаю, т.к удаляю соединение в деструкторе главной формы))) |
|
|
Litkevich Yuriy |
18.3.2012, 20:24
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Stoptyssin |
19.3.2012, 19:17
Сообщение
#5
|
Студент Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: 0 |
т.к удаляю соединение в деструкторе главной формы))) причём здесь деструктор?смотри ещё раз внимательно ссылку, в чём принципиальная разница между двумя приведёнными примерами в документации? Я так понял , в первом случае команда QSqlDatabase::removeDatabase("sales"); выполняется в одном блоке с запросом. А во втором отдельно после блока соединения и запроса, так? Но деструктор выполняется полюбому после блоков соединения БД и запросов? |
|
|
Litkevich Yuriy |
19.3.2012, 19:33
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
команда QSqlDatabase::removeDatabase("sales"); Важно:не команда, а функция, мало того в примере используется прямой вызов статической функции выполняется в одном блоке с запросом. не только с запросом! С чем ещё?В документации в комментарии ко второму коду подсказка |
|
|
Stoptyssin |
19.3.2012, 20:08
Сообщение
#7
|
Студент Группа: Участник Сообщений: 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) "); то таблица создается... |
|
|
Iron Bug |
20.3.2012, 7:38
Сообщение
#8
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
Stoptyssin |
20.3.2012, 14:56
Сообщение
#9
|
Студент Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: 0 |
просто не могу правильно составить запрос кавычки в запросе лишние убери. и не PRUMARY, а PRIMARY. А какие именно, если обинарные - убирал, не помогает((( просто не могу правильно составить запрос кавычки в запросе лишние убери. и не PRUMARY, а PRIMARY. А какие именно, если обинарные - убирал, не помогает((( одинарные |
|
|
Iron Bug |
20.3.2012, 19:38
Сообщение
#10
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
одинарные, понятное дело. их там даже две, зачем - совершенно непонятно. и проверь, что у тебя в str хранится.
|
|
|
Текстовая версия | Сейчас: 23.11.2024, 6:08 |