Russian Qt Forum
Ноябрь 24, 2024, 09:15
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Можнo ли унаследовать класс от QSqlDataBase?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Можнo ли унаследовать класс от QSqlDataBase? (Прочитано 5731 раз)
discribe
Гость
Можнo ли унаследовать класс от QSqlDataBase?
«
:
Апрель 16, 2010, 14:27 »
Доброго времени суток, дорогие товарищи. Я недавно начал осваивать работу с БД под QT и вот встала такая задачка создать отдельный класс для работы с БД (создать в нем методы под определенные запросы). Создал класс и унаследовал его от QSqlDataBase, но когда создаю экземпляр класса и пытаюсь создать соединение с БД выдается ошибка о несоответствии типов
вот пример кода как пытаюсь получить соединение
workBaseDate *work_BD = QSqlDatabase::addDatabase("QPSQL");
класс workBaseDate унаследован QSqlDataBase
Народ кто что знает помогите в этом разобраься
«
Последнее редактирование: Апрель 16, 2010, 17:41 от discribe
»
Записан
crossly
Гость
Re: Можнл ли унаследовать класс от QSqlDataBase?
«
Ответ #1 :
Апрель 16, 2010, 15:13 »
в чем смысл наследования.... для чего??
Записан
discribe
Гость
Re: Можнл ли унаследовать класс от QSqlDataBase?
«
Ответ #2 :
Апрель 16, 2010, 15:58 »
Смысл в том что бы иметь отдельный класс (скажем так отделить класс от основной программы и расширить его функционал), который работает с БД а также дописать определенные методы работы с базой данных. Допустим создали объект данного унаследованного класса и вызываем метод в который передаем какието параметры и, данный метод записывает из в определенную таблицу БД которую мы имеем. В настоящее время создаю класс обертку, в который передаются параметры подключения и внудли создан класс QsqlDataBase и работа происходит через него, но в связи с тем что надо каждый раз в этом классе создавать методы такиеже как в QsqlDataBase это, считаю я, не правильно.
Кстати также возник вопрос по поводу записи и чтения массива в postgres. Вопрос в том как записать одномерный массив данных в postgres, предварительно не преобразуем его в строку вида {<значение>,<значение>,<значение>,..} - для записи, ну и конечно как преобразовать из БД полученный массив в массив с++ не создавая разбор по строке?
Записан
crossly
Гость
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #3 :
Апрель 16, 2010, 17:52 »
в общем случае класс QSqlDatabase служит для контроля соединения с БД... о каком расширении функционала идет речь не совсем понятно....
Код:
workBaseDate *work_BD = workBaseDate::addDatabase("QPSQL");
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #4 :
Апрель 16, 2010, 19:43 »
Во-первых, метод QSqlDatabase::addDatabase, возвращает объект, а не указатель.
Во-вторых, если я не чего не путаю, то присваивать указателю на класс-наследника указатель на базовый класс нельзя. Т.е. запись типа:
DerivedClass * object = new BaseClass();
Можно только наоборот
BaseClass * object = new DerivedClass();
Записан
Юра.
crossly
Гость
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #5 :
Апрель 16, 2010, 19:55 »
ничего не путаешь...
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #6 :
Апрель 16, 2010, 23:41 »
90% что можно обойтись агрегацией QSqlDatabase или даже просто созданием экхемпляра QSqlDatabase в нужных ф-ях вашего класса расширителя функционала.
И все таки интересно поконкретнее что за ф-ции хотите добавить?
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #7 :
Апрель 17, 2010, 08:06 »
к сожалению у QSqlDatabase не правильное имя. По хорошему он должен называться QSqlConnection. Тогда бы у людей и лишних соблазнов не было. Т.к. этот класс представляет лишь соединение с БД, а не БД в целом.
Записан
Юра.
BaltikS
Гость
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #8 :
Апрель 17, 2010, 15:15 »
lit-uriy, верно....с тобой согласен на все 100%. Как будто это из Delphi пошло, там тоже для установки соединения используется TDatabase...
Записан
discribe
Гость
Re: Можнo ли унаследовать класс от QSqlDataBase?
«
Ответ #9 :
Апрель 19, 2010, 08:22 »
Всем спасибо, тогда может подскажете как лучше сделать чтоб бы работу с БД в отдельный класс отнести? У меня только два варианта: 1) Создать класс в котором методы будут возвращать на основе определенных заданных параметров объект QSqlQuery и в основной программе выполнять этот запрос; 2) Как уже говорилось выше создать класс обертку в котором не возвращается объект запроса, а сразу записывается в БД. Возможно подскажете как отделить класс работы с БД от основной программы (допустим для того что бы в другой программе выполнять работу с этой же БД при минимальной переписи кода, просто переносом класса)?
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...