Название: Помогите разобраться с базами данных в QT Отправлено: gogi от Июль 10, 2008, 10:23 Уже который день бьюсь ???
У меня возникают сложности с добавлением/удалением записей в базу данных. Вот написал тестовый проект, в котором просматривается проблема с добавлением (приаттачен). Суть проблемы - нажимаю кнопку 'Add' - запись добавляется. Я её могу редактировать, но потом если я нажму ещё раз 'Add', то все мои изменения исчезают. Сейчас у меня по умолчанию заносится запись "www" (любой текст), мне она вообще не нужна, но без вызовов setData("www") и commit() ещё хуже получается. Непонятно, как лучше делать model->submit() или model->submitAll()? И ещё - как эти submit'ы соотносятся с коммитами (QSqlDatabase::commit()) для базы данных? Название: Re: Помогите разобраться с базами данных в QT Отправлено: Пантер от Июль 10, 2008, 10:55 Ты коннект к базе не закрываешь, поэтому ничего не происходит.
1. В h определи QSqlDatabase db 2. Определи MainForm::~MainForm() 3. В ~MainForm() запиши: Код: db.commit(); Название: Re: Помогите разобраться с базами данных в QT Отправлено: gogi от Июль 10, 2008, 12:25 Мне не надо сохранять БД в этом тестовом проекте. Как это делать, я знаю. C таким же успехом мог бы БД в памяти сделать.
Мне просто не понятно, почему не удаётся добавлять строки и потом их редактировать во время работы программы. Насчёт db. Насколько я понял - её не нужно определять как глобальную. Если нужно обращаться к БД, то всегда можно вызвать QSqlDatabase db = QSqlDatabase::database(); Название: Re: Помогите разобраться с базами данных в QT Отправлено: Пантер от Июль 10, 2008, 12:58 Все добавляется и редактируется.
Название: Re: Помогите разобраться с базами данных в QT Отправлено: gogi от Июль 10, 2008, 13:25 Ещё раз описание проблемы - после запуска в таблице одна строка. Жму Add. Появляется строка 2. В ней написано "www". Меняю на "222". Жму ещё раз Add. Появляется третья строка (с "www") и во второй строке какого-то хрена надпись становится также "www".
Проверял под: Debian GNU/Linux 4.0 (testing), g++ - 4.3.1-2, Qt - 4.4.0-3; Windows XP SP2 - MinGW-3.4.2, qt-win-opensource-4.4.0-mingw. Название: Re: Помогите разобраться с базами данных в QT Отправлено: Пантер от Июль 10, 2008, 15:21 Код: void MainForm::Addpressed() Название: Re: Помогите разобраться с базами данных в QT Отправлено: gogi от Июль 14, 2008, 08:57 Всё по прежнему :(
Может это баг в QT и написать надо в Тролльтеч? Название: Re: Помогите разобраться с базами данных в QT Отправлено: Mikhail от Июль 14, 2008, 20:32 Всё по прежнему :( Может это баг в QT и написать надо в Тролльтеч? Ну так сразу и баг. Посмотри пример с QSqlRelationalTableModel из официальной книги Trolltech. Там все как тебе надо. А вообще чтение ассистента еще ниеому не вредило. |