![]() |
|
|
![]()
|
|
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Добрый день!
Почти готова моя прога, выполняет все что мне нужно, читает настройки из файла, но периодически вываливается в "программа выполнила недопустимую операцию. Закрыть? Отправить отчет(?)". Диалоги, при закрытии которых возникает ошибка создаются так :
В первом объекте в самом конце конструктора идет запись в БД MS SQL. Во втором объекте запись в MS SQL происходит по нажатию кнопки. Я сейчас попробовал закомментировать строки с записью в БД и запустил прогу 10 раз. НЕ вывалилась ни разу. Значит дело в конструкции, выполняющей запись в БД. Конструкция следующая : { QString strQuery; strQuery = "update......"; QSqlQuery query(strQuery); return query.exec(); } в первом случае это update, а во втором insert PS: подозреваю что SQL сервер не успевает вернуть результат |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Учись пользоваться дебагерром. Не забудь смотреть в консоль, возможно через qDebug() Qt что-то сообщает. Слишком мало информации. На вид ничего страшного не делается.
|
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
в консоли пусто. в дебаггере (использую qt creator) -- вроде бы точка срабатывает, но в то же время не становится желтой и не появляются переменные для обзора, см прикрепленное файло |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 5 Всего: 44 |
GrishinUS, може стоит убрать из конструктора работу с бд в отдельную инициализирующую функцию?
или надо как минимут заключить этот кусок кода в try ... catch |
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Это можно убрать, во втором случае у меня так и сделано -- работа с БД по событию. Все равно крашится. ==> сейчас это непринципиальный вопрос где работать с БД : в конструкторе или в отдельном методе. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 5 Всего: 44 |
GrishinUS, далее засунь код в блок try catch и проверяй еще раз
|
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Засунул. И что там ловить? |
|||
|
||||
| chaos |
|
||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 5 Всего: 44 |
для начала лови ... просто ради проверки - упадет не упадет. а дальше будешь думать. |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Может быть где-то здесь кроется проблема ?
|
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
trUtf8 убрал, крашится все равно :(
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
ошибка при закрытии, а даете нам код создания. Приведите код ваших диалогов. Это сообщение отредактировал(а) mes - 10.11.2008, 23:51 |
|||
|
||||
| GrishinUS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Код с INSERT :
Код с UPDATE:
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
Я чего то не пойму.. У Вас когда прога крашится ? при выполнении этих функций или при закрытии диалога? Я как понял при закрытии, но где ж тогда описания класса, конструкторов и деструктора? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
А я вообще ничего не понимаю. В этих функциях каждый раз создается новое соединение с базой, прежде чем выполнить запрос
|
|||
|
||||
| GrishinUS |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Не обращайте внимания. Прога работает с тремя БД, к какой именно БД коннектиться зависит от условий. Я делаю допущение, что на момент выполнения запроса имеется коннект к другой базе. Конструкторы, как просил mes. Первый :
Второй :
Деструкторов нет. Это сообщение отредактировал(а) GrishinUS - 11.11.2008, 13:35 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
Все из Вас клещами вытягивать надо. a описание класса где ? хотя бы перечень полей (дата-элементов). Это сообщение отредактировал(а) mes - 11.11.2008, 13:47 |
|||
|
||||
| GrishinUS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
и еще один :
Спасибо за внимание! |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
||||
|
||||
| GrishinUS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
используется в другом методе.
Закомментил. Поведение краша не изменилось. Вывод -- sql тут не при чем. Это сообщение отредактировал(а) GrishinUS - 11.11.2008, 15:29 |
||||
|
|||||
| Torsten |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 10.6.2008 Где: Pskov Репутация: 3 Всего: 7 |
А дамп снять и стек вызовов раскрутить не пробовали ?
--------------------
We have no begining, we have no end. We are infinite. |
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
неа, как это сделать? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
В приведеннных участках проблемы пока не видно.
Используется ли в каких нибудь методах этих классов new /delete для указателей на внешние данные ? покажите как. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
||||
|
||||
| GrishinUS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Да, new используется здесь :
Это сообщение отредактировал(а) GrishinUS - 12.11.2008, 09:22 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
попробуйте закомментировать эту строчку.
|
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
||||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
поможете разобраться с отладчиком? http://forum.vingrad.ru/forum/topic-235898.html |
|||
|
||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
GrishinUS, а не проще было бы если б ты выложил исходники, так бы быстрее тебе б нашли ошибку (ну можеш не весь код, а поудалять лишнее), а то я вижу пост уже существует почти неделю и ты так и не нашел ошбку
p.s. если у тебя отладчик не работает, то хотя бы повыстасляй мессейдж боксы в проблемных местах и ищи ошибку -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| GrishinUS |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Вобщем пристыдил меня Elfebet в одном из методов объекта добавлялась БД, которая вызывалась с одним параметром и тянула дефолтовый коннект на себя :
добавил второй параметр сюда
и сюда :
Все работает на ура! Всем спасибо. Это сообщение отредактировал(а) GrishinUS - 14.11.2008, 10:24 |
||||||||
|
|||||||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |