![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
tin_gimranoff |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 19.10.2010 Пользователь №: 2127 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем доброго времени суток. Помогите плз... пишу вот такой код:
И когда дело доходит до этого события то проект вылетает вместе с QtCreator'ом с ошибкой сегментирования. Причём точно знаю что ошибку вызывает строка if(!test_connect.connect("information_schema", HostName, UserName, UserPass, DataBasePort)) Почему так происходит, объясните плз, и как это дело исправить? Заранее СПС!!!!
Причина редактирования: пользуйся тегами
|
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
tin_gimranoff |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 19.10.2010 Пользователь №: 2127 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
проект вылетает вместе с QtCreator'ом прям с креатором ? Сильно! Пиши разработчикам о глюке ![]() а так если
А так он ругается вообще на несовместимость типов, т.к. connect требует в качестве аргументов const* char, а в QT объекты обрабатывают строки как я понимаю в QString А вообще мне надо заюзать под Linux QT и законектиться к базе. Я нашёл тока mysql++ может быть есть ещё что нить для плюсов для работы с базами? |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
tin_gimranoff, а ты уверен, что косяк именно в этом месте ? А вот сделай так (это исключает наличие ошибки в этом месте):
и законектиться к базе. тип базы - ? От способ подключения к базе не зависит от языка программирования |
|
|
BRE |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
tin_gimranoff |
![]()
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 19.10.2010 Пользователь №: 2127 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
[quote name='Алексей1153' date='20.10.2010, 7:02' post='41509']
tin_gimranoff, а ты уверен, что косяк именно в этом месте ? А вот сделай так (это исключает наличие ошибки в этом месте):
Так пробовал работает. Но стоит вместо статических значений запихнуть переменные, вылетает, соответственно ошибка именно в этой строке. |
|
|
Алексей1153 |
![]()
Сообщение
#7
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
tin_gimranoff, это потому, что сохраняешь указатель на локальные данные
ошибка тут
text() возвращает QString, созданный на стеке. Ты берёшь адрес начала данных. Затем, по выходу из функции объект убивается, а указатель указывает на невалидные данные - и где-то потом, в обработчике сообщения кто-то пытается получить доступ к этому мусору тут выход такой:сделать QString HostName QString UserName QString UserPass членами класса (new_connect , например) . Можно даже в одну структурку их определить. Так решится проблема потери валидности данных |
|
|
tin_gimranoff |
![]()
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 19.10.2010 Пользователь №: 2127 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А вообще мне надо заюзать под Linux QT и законектиться к базе. Я нашёл тока mysql++ может быть есть ещё что нить для плюсов для работы с базами? А документацию по Qt почитать не получилось? ... на тему "QtSql Module" Спс, как раз вчера пересобрал Qt c поддержкой этого модуля. Просто первое что я нашёл это было MySQL++ и решил поюзать его. tin_gimranoff, это потому, что сохраняешь указатель на локальные данные ошибка тут
text() возвращает QString, созданный на стеке. Ты берёшь адрес начала данных. Затем, по выходу из функции объект убивается, а указатель указывает на невалидные данные - и где-то потом, в обработчике сообщения кто-то пытается получить доступ к этому мусору тут выход такой:сделать QString HostName QString UserName QString UserPass членами класса (new_connect , например) . Можно даже в одну структурку их определить. Так решится проблема потери валидности данных Спс, сегодня попробую, если получится то буду юзаться всё же Mysql++ вместо QtSql |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 1.9.2024, 6:06 |