Pull to refresh

Comments 8

Мне кажется у вас просто перепечатка справки. Которая многократно была переведена в версии 4.х.х.
И совет ваш очень вредный, ибо будет «тормозить» просто безбожно.
каждая имеет связь с предыдущей с помощью foreign key через id, т.е. при удалении необходимо каскадно удалять все «дочерние» записи. Это приводит к огромному количеству запросов, работа приложения сильно замедляется...

В SQLite можно настроить автоматическое каскадное удаление по foreign key, так что одного sql-запроса достаточно. Даже, если бы такого не было, то никакая дополнительная абстракция не поможет избежать выполнения нужного числа запросов.
Использовал QSqlRelationalTableModel в проекте на работе 9 лет назад, всё устраивало, пока не вышла Qt 4.8, в которой что-то сломали — подозреваю, специально, — и приложение стало падать, если на месте связи значение NULL. Также не работает на view по причине отсутствия у них первичного ключа. В общем, за последние 9 лет мне ни разу не пригодился этот класс в моих проектах, QSqlTableModel + view с правилами на изменение намного удобнее, хотя и приходится писать небольшую обвязку для делегатов.

Первый способ крайне опасный, если вы не пишите приложение чисто для себя. Привет sql инъекции. Допускаю, что вы код накидали чисто для примера, но в любом случае не стоит так делать.

Этот код я привёл только для примера, никого так делать не призываю, это опасно с точки зрения инъекций. К тому же, есть немного более лаконичный способ с bindValue().

Приветствую всех, в QSqlRelationalTableModel мне не нравится несколько моментов (Qt 4.8) , используем с QTableView к примеру:

  1. Вы добавляете новую строку, устанавливаете значение (какой-то текст) relation поля, все Гут. Сохраняете строку (submit, select) и что получаете? Пустое значение в поле.

Попробуйте 4.7. Насколько я помню, в 4.8 этот класс был сломан.

Можно конечно попробовать 4.7. Но смысл? Мое мнение, что троли не доделали развитие QSqlRelationalTableModel на тот момент, когда продали права на Qt. А потом никому не надо было ничего развивать. Поэтому я просто сделал свое развитие PblSqlTableModel и сделал как я это вижу (у меня есть об этом свободном проекте статья на хабре)

Sign up to leave a comment.

Articles