Qt + SQLite, Не могу закрыть соединение с базой |
Здравствуйте, гость ( Вход | Регистрация )
Qt + SQLite, Не могу закрыть соединение с базой |
Dimix |
24.11.2010, 14:44
Сообщение
#1
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я новичек в программировании средствами Qt да еще и с использованием SQLite. Прошу сильно не критиковать.
Проблема такова. Существует главная БД, и N - количество дополнительных БД. В главной БД содержатся имена дополнительных БД. Делаю запрос по выбраному имени из главной БД и присваиваю имя переменной. Закрываю свою главную БД. И осуществляю соединение с БД имя которой содержится в переменной. Получаю. QSqlQuery::exec: database not open Я напливал на это оповещение и решил продолжить. Пытаюсь добавить в нее запись (ничего не происходит). Начинаю добавлять запись в Главную БД (соединение с которой разрывал) оно добавляет без проблем. (имена баз все разные) ОБЪЯСНИТЕ НОВИЧКУ. Спасибо! |
|
|
512es |
8.12.2010, 21:05
Сообщение
#2
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
1) склайту не нужно указывать HostName, UserName и Password
2) в чём суть функции maindbCreate()? по сути она вообще ничего не делает 3) maindbCreate.lastError().text() в maindbCreate() это вообщем то возвращаемая переменная. в твоём примере не используется. 4) не правильно:
Для подстановки значений в запрос есть специальная функция prepare():
5)
инсертить так как ты делаешь в эту таблицу не получится. id при вставке не задаёшь. возможно ты хотел сделать так:
6) создаёшь базу QSqlDatabase::addDatabase("QSQLITE"); а удаляешь QSqlDatabase::removeDatabase("QSQLITE"); -- так нельзя. при создании не указываешь имя соединения, только драйвер. а удаляешь по неизвестному имени соединения "QSQLITE". по имени драйвера то нельзя удалять. должно ругаться на ошибки. 7) мне показалось или ты и правда пытаешься создавать и удалять соединения с бд каждый раз? почитай мой пример ещё раз внимательнее |
|
|
Dimix |
10.12.2010, 13:17
Сообщение
#3
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата Мне показалось или ты и правда пытаешься создавать и удалять соединения с бд каждый раз? почитай мой пример ещё раз внимательнее Я и вправде создаю и удаляю каждый раз драйвер БД. Почему я так решил! У меня работа с данными пользователь может заполнять и удалять их (я сделал как 100% вариант сохранения данных так как соединение и драйвер БД являются отруюленными ошибки при аварийном завершении не будет) Я новичек и еще несильно понимаю как правильно... У меня срочный вопрос. В БД существует поле Дата. Как сделать ильтр по заданному пользователем диапазону. Пример: ___Дата____|К-во|_Чего_ 01, 01, 2010 | 100 | литров 06, 02, 2010 | 200 | литров 01, 01, 2011 | 300 | литров Вывести с 01, 02, 2010 по 01, 06, 2010 года |
|
|
Текстовая версия | Сейчас: 22.12.2024, 4:42 |