@balamyt92
; select * from users; --

Как правильнов в Qt работать с MySQL?

Здравствуйте. Я начал изучать Qt не так давно, использовал его для создания гуя в своих небольших хеловодов.
В данный момент работаю в колцентре тыжпрограмистом где применен просто ужасающий некрофилийский стек технологий прямиком из начала тысячелетия - Windows Server 2000 + MS Acess 2000 + самописная программа (видимо это был Delphi) через которую работает с этой базой оператор(ы). Не смотря на очень не большой объем базы (чуть более 500тыс строк в "главной" таблице) мы имеем чрезвычайно низкую производительность(результат запроса ждем до 20 секунд). Плюс все это крутиться в виртуалке, так как система не может работать на современном оборудования в следствии отсутствия драйверов. Как можно понять, система накрепко прибита не просто к одной ОС, а к конкретной её версии (на других системах "программка" отказываться корректно работать). В добавок ко всему исходных кодов данной программы нет.

Начальник уже давно мается мыслью "переписать программу". Но на это то нет времени, то нет денег. Поэтому в качестве саморазвития и получения полезного опыта решил взяться за данную работу.

В качестве СУБД взял MySQL.
Языковой стек Qt/С++.
Программу хочется сделать кросплатформенной и желательно не прибитой гвоздями к одной лишь СУБД, предполагается легкая замена на например Postgre.


Прошу прощения за столь длинное вступление, в чем суть:


имеется таблица примерно такого вида:

ID_Firm, ID_Name, ID_Type, ID_Mark, Rank, Description
2, 15, 4, 8, 100, описание
8, 1, 5, 8, 100, описание2
6, 5, 12, 3, 100, описание3

Соответственно имеются таблицы справочников для Firm, Name, Type, Mark вида
ID, Name , +- еще несколько полей, в зависимости от того что это
1, "Госнаркоконтроль"

В Qt предлагается несколько моделей взаимодействия с базой данных, это как SqlQuery, SqlTableModel, SqlRelationalTableModel.

Есть окно фильтра, которое состоит из ComboBox, где выбираются элементы по которым нужно произвести выборку. Не могу понять как организовать так что бы например если мы выбрали нужную нам марку, то вы поле выбора модели, мы могли выбрать из моделей только этой марки, ну и все в таком духе. При этом не хочу каждый раз грузить всю эту табличку к клиенту из базы, а формировать запрос и перекладывать всю нагрузку на сервер.
Какую модель взаимодействия выбрать для этого? Я начал пробовать с SqlQuery но быстро закапался в лапшу запросов и костыли склеивания запросов из нескольких строк. Можно ли исключить написание SQL запросов в коде вообще? Смотрел в сторону ORM, но не имею опыта работы с ними и показалось слишком сложным, отсутствуют сколько нибудь адекватные примеры работы(хелоуворды на сайтах как примеры не всчёт, в них все просто, включая изначальную задачу), при том что нет толковой документации на русском, что не так критично, но хотелось бы.
  • Вопрос задан
  • 489 просмотров
Пригласить эксперта
Ответы на вопрос 1
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Начальник уже давно мается мыслью "переписать программу". Но на это то нет времени, то нет денег.


Ну раз нет, так нет. Незачем тогда напрягаться. А для себя найтите что пополезнее.

По сабжу - в зависимости от задачи и организации данных выбирайтее модель. Вообще выглядит так, буд-то вам подойдет обычный SqlTableModel.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы