Russian Qt Forum

Qt => Вопросы новичков => Тема начата: And_Y от Июнь 13, 2013, 09:14



Название: Работа с БД
Отправлено: And_Y от Июнь 13, 2013, 09:14
Подскажите, пожалуйста. Уже совсем запутался.
Я организовал подключение к БД через специальный объект и потом это подключение ссылку раздаю всем другим объектам. Но зачастую просто непонятно как передать эту ссылку и как то не очень удобно получается явно везде ее пересылать.
Я новичок в QT, да и на C++ очень давно писал. ООП вспоминаю на рабочем проекте.

Что я делаю не так? Может есть какие то более простые решения? Например соединение по умолчанию для всего приложения, чтобы не передавать его всем и каждому, а то мне даже в сигналах приходится его пихать.

Заранее спасибо.


Название: Re: Работа с БД
Отправлено: Bepec от Июнь 13, 2013, 09:46
Есть такое понятие - синглтон.

Это глобальный класс, который как раз и содержит необходимые объекты, к которым может обратиться любой другой класс. И да, исходя из названия он должен быть один в программе ;)


Название: Re: Работа с БД
Отправлено: And_Y от Июнь 13, 2013, 10:19
А какого то стандартного алгоритма реализации работы с СУБД не существует? :-)
Посмотрел на синглтоны... Даже не знаю, можно попробовать конечно, но тоже придется ссылкой тыкать везде на него?


Название: Re: Работа с БД
Отправлено: mutineer от Июнь 13, 2013, 10:19
А какого то стандартного алгоритма реализации работы с СУБД не существует? :-)
Посмотрел на синглтоны... Даже не знаю, можно попробовать конечно, но тоже придется ссылкой тыкать везде на него?


Какой еще ссылкой?


Название: Re: Работа с БД
Отправлено: Bepec от Июнь 13, 2013, 10:37
Вы в любом случае будете тыкать ссылкой. Даже если в каждом классе будете создавать свой коннект к БД.  Вас это смущает, или это опять из теории "надо перехватывать нажатия, не перехватывая нажатия" © ?


Название: Re: Работа с БД
Отправлено: And_Y от Июнь 17, 2013, 08:35
А можно вообще пример как мне строить работу объектов и программы в целом?
Т.е. мне нужно создать объект, который устанавливает соединение с базой и потом все пользуются этим соединением, или он должен выполнять запросы, которые передаются ему от других объектов?


Название: Re: Работа с БД
Отправлено: Serr500 от Июнь 17, 2013, 08:59
Синглтон Майерса (http://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%B8%D0%BD%D0%BE%D1%87%D0%BA%D0%B0_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29), например. Первое обращение вызовет инициализацию объекта, во все cpp-файлы включаете хидер файла класса синглтона и получаете указатель на объект через метод instance().


Название: Re: Работа с БД
Отправлено: And_Y от Июнь 17, 2013, 09:29
Спасибо. Пошел пробовать.