QSqlDatabase в отдельном потоке, QSqlDatabase в отдельном потоке которому передаются запросы на выполн. |
Здравствуйте, гость ( Вход | Регистрация )
QSqlDatabase в отдельном потоке, QSqlDatabase в отдельном потоке которому передаются запросы на выполн. |
Litkevich Yuriy |
18.4.2009, 21:43
Сообщение
#11
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
defnull, я к тому, что может быть лучше утяжелить класс потока и избавится от дополнительного класса Database.
Я структуру программы постичь немогу, что и как взамодействует. |
|
|
padla |
21.4.2009, 17:52
Сообщение
#12
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 17.11.2008 Пользователь №: 424 Спасибо сказали: 0 раз(а) Репутация: 0 |
Небольшой вопрос. А что произойдет если во время работы программы соединение с БД разорвется?
|
|
|
SABROG |
21.4.2009, 21:59
Сообщение
#13
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Небольшой вопрос. А что произойдет если во время работы программы соединение с БД разорвется? Это риторический вопрос или он адресован к конкретной реализации взаимодействия с базой данных через разные потоки? Если первое, то зависит от того написал ли ты проверку на возвращение ошибок при работе с запросами. Если не написал, то возможен любой исход от продолжения нормальной работы программы до AV. А вот с поделками на Delphi обычно это заканчивается выведением окна (иногда бесконечное их создание) о разрыве соединения без дальнейшей возможности к переподключению до перезагрузки программы. Если вопрос с подтекстом типа, что будет если в этот момент передавались данные, то обычно происходит откат и это никак не влияет на целостность базы данных. Но она должна поддерживать команды BEGIN TRANSACTION ... END TRANSACTION. Сообщение отредактировал SABROG - 21.4.2009, 22:02 |
|
|
defnull |
21.4.2009, 23:55
Сообщение
#14
|
Студент Группа: Участник Сообщений: 49 Регистрация: 1.5.2008 Пользователь №: 165 Спасибо сказали: 0 раз(а) Репутация: 1 |
Цитата defnull, я к тому, что может быть лучше утяжелить класс потока и избавится от дополнительного класса Database. Я структуру программы постичь немогу, что и как взамодействует. Честно говоря я не понимаю как вы предлагаете утяжелить поток. Структура предполагалась следующая. Есть поток например DatabaseThread который должен обрабатывать всё что связанно с БД. Есть класс Command в котором содержиться sql запрос и работа с этим запросом. Есть главное окно программы пусть будет Window. Планировалось сделать следующее: есть интерфейс который поддерживают все классы наследующие Command. Когда мы хотим обратиться к бд мы вызываем сигнал который содержит указательна соответствующую команду унаследованную от Command. Сигнал передаётся потоку и далее функция Command назовём её например start работает уже в потоке где создавалось подключение к БД. ТОесть идея в том что всё что связанно с БД обрабатывается в потоке отвечающим за БД. Как это сделать утяжелив исключительно DataThread я не знаю. Поэтому и решил что нужен дополнительный класс Database который создаётся в секции run() потока DataThread и соединяется потом с кем нужно дял выполнения команд вида Command и отсылания сигналов об ошибках. Можете привести пример как можно это на ваш взгляд упростить?? з.з.ы чот пытался процитировать а похожу вместо этого ставил + и - за сообщение %) Сообщение отредактировал defnull - 21.4.2009, 23:57 |
|
|
padla |
22.4.2009, 17:02
Сообщение
#15
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 17.11.2008 Пользователь №: 424 Спасибо сказали: 0 раз(а) Репутация: 0 |
То-есть мне придется ручками опять устанавливать соединение?
|
|
|
Текстовая версия | Сейчас: 25.4.2024, 13:33 |