Russian Qt Forum
Ноябрь 23, 2024, 21:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: непонятно с MYSQL  (Прочитано 6151 раз)
vasa_sol
Гость
« : Июль 06, 2008, 00:26 »

Здравствуйте!
Вот непонятно:
сделал модель, MyView, определил текст SQL-запроса для обновления данных каждого столбца таблицы в bool MyModel::setData.
Cоединяюсь с QSQLITE, в MyView меняю данные, происходит отображение измененных данных. Все работает. Соединяюсь с QMYSQL (таблицы идентичные, в общем QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ) поменял на QSqlDatabase db = QSqlDatabase::addDatabase( "QMYSQL" ) ну и понятно всякие другие setDatabaseName поменял), в MyView меняю данные и ничего не происходит, т.е. данные не меняются. А очень хочется и непонятно почему. Кто подскажет отчего так?
Записан
ритт
Гость
« Ответ #1 : Июль 06, 2008, 01:01 »

исчерпывающая информация.
перевожу: "отнаследовался от Q*View, а в bool MyModel::setData выполняю SQL-запрос. почему не работает?"
Записан
vasa_sol
Гость
« Ответ #2 : Июль 06, 2008, 11:12 »

Поясняю: сделал свой просмотр от QTableView дабы реализовать разные события от мыша, написал модель для разной раскраски клеточек, в модели определил setData чтобы редактировать данные.  C sqlite все работает - данные в клеточках можно поменять, добавить строки, удалить и т.п. С mysql (идентичные талицы) данные не меняются как-бы модель readonly стало.
Записан
crocus
Гость
« Ответ #3 : Июль 06, 2008, 17:46 »

проверь наличие ключей в таблицах
Записан
vasa_sol
Гость
« Ответ #4 : Июль 06, 2008, 18:29 »

Имеют место быть  Грустный
Записан
vasa_sol
Гость
« Ответ #5 : Июль 07, 2008, 17:31 »

Видимость такая: добавляешь запись
Код:
QSqlQuery q;
q.prepare("insert into (что-то) values(что-то)");
ok=q.exec(); // после exec ok=true
а данные не меняются ..... или добавляется какая-то хрень... Непонимающий
Записан
ритт
Гость
« Ответ #6 : Июль 07, 2008, 17:55 »

что q.prepare(...) возвращает?
попробуй
Код:
QSqlQuery q;
ok=q.exec("insert into (что-то) values(что-то)");
Записан
vasa_sol
Гость
« Ответ #7 : Июль 07, 2008, 22:53 »

Код:
if(!q.prepare("тут prepare"))
{
 QMessageBox::critical
.....
первое сообщение:
Код:
Lost connection to MySQL server during query QMYSQL3: Unable to execute statement
в консоли:
Код:
QMYSQLResult::cleanup: unable to free statement handle
последующие:
Код:
MySQL server has gone away QMYSQL3: Unable to prepare statement

как понимаю связь с сервером теряется. И почему ....?

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.261 секунд. Запросов: 21.