crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> 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  


Цитата(padla @ 21.4.2009, 18:52) *
Небольшой вопрос. А что произойдет если во время работы программы соединение с БД разорвется?

Это риторический вопрос или он адресован к конкретной реализации взаимодействия с базой данных через разные потоки?

Если первое, то зависит от того написал ли ты проверку на возвращение ошибок при работе с запросами. Если не написал, то возможен любой исход от продолжения нормальной работы программы до 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  


То-есть мне придется ручками опять устанавливать соединение?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 13:33