|
|
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Собственно, сабж в названии. Qt 4.2.3, WinXP SP2, mysql odbc 3.51 drv, mysql 5.1.11, Dev-C++,mingw32 3.4.2 есть окно, унаследованное от QMainFrame. в нем в конструкторе устанавливается соединение с БД. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. так вот. при закрытии окна (оно пока единственное, поэтому приложение автоматом "типа" завершается) приложение остается висеть в списке процессов (ну, в диспетчере задач)... если заремить строчку подключения к базе в конструкторе - все ок, приложение завершается. Я пробовал делать в деструкторе окна db.close(), QSqlDatabase::removeDatabase(db.connectionNames()[0]); Короче, извращался по-разному. Доку порыл. Нигде даже просвета нет... гугл молчит.. третий час сижу, не могу вкурить, почему... кстати, если в деструкторе написать db.close() - внутри него зацикливается.... если не писать - я так понял, что QSqlDatabase сам отключает все соединения и удаляет добавленные databases... и тоже виснет, соответственно.. если смутил ASSERT_WITHMSG - Код: plaintext 1. это просто костыль, т.к. в dev-cpp плохо работает отладка... Если кто может помочь - очень прошу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 14:30 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
простите, вот так: tAZAR Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 14:33 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
и еще простите... сумбурно вышло... tAZAR Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 14:43 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
я жуею! КАК ОНО КОМПИЛИТСЯ??? сигнатура: QSqlDatabase * addDatabase ( const QString & type, const QString & connectionName = defaultConnection ) db.open() – через точку??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 17:53 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
http://qt.kde.ru/doc/3.0/sql.html#5 говорят, само должно закрываться всё, иначе QSqlDatabase maintains ownership of the pointers returned by the addDatabase() static function. To remove a database from the list of maintained connections, first close the database with QSqlDatabase::close(), and then remove it using the static function QSqlDatabase::removeDatabase(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 18:00 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
tAZAR Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И учти что использовать QSqlDatabase::database() можно только после того как соединение с базой было хотя бы раз настроенно и установленно. Попытки использовать QSqlDatabase::database() сразу после создания, но до определения параметров приводит к странным глюкам. Например такой код будет работать, но давать варнинги "база данных не открыта": Код: plaintext 1. 2. Там все надо делать так и только так как показано в примерах, шаг влево - шаг вправо считается за попытку ГПФа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 18:06 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
аа… это третья :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 18:06 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
maXmoя жуею! КАК ОНО КОМПИЛИТСЯ??? сигнатура: QSqlDatabase * addDatabase ( const QString & type, const QString & connectionName = defaultConnection ) db.open() – через точку???Да, да, да. Как ни странно это все компилится и работает :) Вот такой этот С++ загадочный - переопределят операторы для класса а потом у простых прикладных программистов мозги кипят "толи это указатель, толи ссылка, толи копирование объекта или что это вообще за фигня?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 18:10 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
в четвёртой сигнатурка другая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 18:18 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
maXmo Все прекрасно компилиться.. Сделано, кстати, точно как написано в Qt Assistant... Насчет сигнатуры QSqlDatabase* QSqlDatabase::addDatabase... там не указатель возвращается. Еще факт - дома все нормально... процесс завершается... Короче, я как понял, луна просто не в той фазе у меня дома. сейчас попробую вынести из класса, как советовали.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2007, 08:47 |
|
||
|
QT, QSqlDatabase, приложение не завершается
|
|||
|---|---|---|---|
|
#18+
[quot White OwlА db объявлена как член класса? Убери ее обратно на стек. То есть пиши так:.. [/quot] Большое спасибо :-) Заработало. Ну, блин, они там намудрили че-то... Надо будет проверить еще на паре-тройке наших компов... Мож - теперь на них и у меня дома завершаться перестанет :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2007, 09:08 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34513635&tid=2028902]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 498ms |

| 0 / 0 |
