Название: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Keeper_B от Март 27, 2010, 01:17 Привет всем.
Обнаружил странную вещь. При использовании Код почему то таблица tableView моргает и остаётся пустой. Если исправить на Код то всё работает нормально. Кто может объяснить почему так? Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: BRE от Март 27, 2010, 07:28 Потому, что в первом случае объект модели создается на стеке и соответственно при выходе из зоны видимости/функции он разрушается, во втором случае этот объект создается в куче и продолжает жить после выхода из зоны видимости.
Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Keeper_B от Март 27, 2010, 11:30 Спасибо.
Блин а я ведь это знал. ;) Возможно меня сбило с толку вот что, у меня работало соединение пока была база по умолчанию, то есть так: Код и всё работало. Когда я исправил на множество соединений, оно стало вести себя так. То есть, почему раньше когда соединение было по умолчанию всё работало? Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Пантер от Март 27, 2010, 11:58 QSqlQueryModel queryModel(QSqlDatabase::database("NAME_CONNECTION"))
Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Keeper_B от Март 27, 2010, 12:32 мммм
Вроде по документации работать не должно. Там вроде один не перегруженный конструктор QSqlQueryModel ( QObject * parent = 0 ). А подключение к базе ассоциируется именно в запросе так: void QSqlQueryModel::setQuery ( const QString & query, const QSqlDatabase & db = QSqlDatabase() ). Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Пантер от Март 27, 2010, 12:49 Точно, писал по памяти и подзабыл. Конечно
queryModel.setQuery("select * from mytable", QSqlDatabase::database("NAME_CONNECTION")); Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Keeper_B от Март 27, 2010, 14:29 А как решить проблему с периодическим пропаданием БД?
На пример требуется удалить строку пишу такой код: Код В ответ говорит что база не открыта. Хотя саму таблицу грузит и отображает данные. Даже удалять строки можно. А вот добавить нет. :( Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Пантер от Март 27, 2010, 14:41 А если попробовать int row = model->rowCount() - 1?
Сделай небольшой тестовый пример с SQLite и сюда скинь. Название: Re: Работа с QSqlQueryModel при множестве соединений к БД Отправлено: Keeper_B от Март 29, 2010, 12:51 Всё нашёл причину. :) Можно ставить решено.
Я там для генерации нового id использовал QSqlQuery в inline функции и не передавал ей указатель на БД. То есть забыл QSqlQuery query(QSqlDatabase::database("MyConnect")); сказать. |