Название: Нормальная работа с БД Отправлено: Dp0H от Ноябрь 06, 2009, 23:25 Здравствуйте всем.
Столкнулся с реализацией клиента БД на Qt. Благо дело, задача мизерная (регистрация событий на проходной в базе) и легко решилась с помощью массивов. Но есть желание попытаться перевести крупный проект c .NET на Qt ради кросплатформенности. И вот возникает ключевое непонимание - как реализовать работу с БД. В чем суть... Обычная картина: имеем выборку (результат выполнения запроса к нескольким таблицам, результат выполнения процедуры и т.п. - в общем случае это просто скрипт). Предвкушая посыл к QSqlRelationalTableModel - справочники слишком велики, чтобы грузится на клиента. Окно редактирования записи такой выборки реализует работу со справочниками так же - клиент получает необходимый минимум. Далее - возможные действия с выборкой - INSERT, UPDATE, DELETE - реализуются так же абстрактными запросами, которые могут представлять собой как атомарные инструкции, так и вызов процедур или целый скрипт. В результате вставки или изменения конкретная запись сразу же обновляет свое представление в интерфейсе клиента с помощью данных, полученных в результате выполнения соотв. команды или последующей команды (чтобы нарисовать значения из справочников, ссылки на которые воткнулись в текущую запись в результате вставки/модификации). Не хотелось бы тыкать пальцем, но придется таки ткнуть в давно придуманные и хорошо сделанные велосипеды: http://www.devart.com/ru/dac.html - VCL-компоненты (когда они начинали, по-моему .NET еще не было) (Sql/Odbc и т.п.)DataAdapter в .NET Для DataAdapter на каждое действие создаются команды типа Код: DA.InsertCommand = new SqlCommand( Заранее спасибо за советы и тыканье носом куда следует. Название: Re: Нормальная работа с БД Отправлено: lit-uriy от Ноябрь 07, 2009, 01:03 Готового нет, можно сделать модель на основе QSqlQueryModel.
Название: Re: Нормальная работа с БД Отправлено: crossly от Ноябрь 09, 2009, 12:53 tablemodel может сразу.... может кэшировать строку.... може кэшировать все....
Название: Re: Нормальная работа с БД Отправлено: break от Ноябрь 09, 2009, 14:09 Если не трудно опишите саму задачу - хоть образно - то есть то конечное с чем столкнуться пользователи, просто вы сказали что справочники на основе TableModel или RelationTableModel не получается т.к. они "выкачивают" все на клиента - но на самом деле это не так - полный селект делается только в случае необходимости -= если например пользователь проходит от первой записи к последней. Вообще интерфейс надо подрузумевать так чтобы у пользователя была возможность работы с небольшими группами записей - скажем селект по буквам алфавита и т.д. Прям не верится что имеет смысл изобрнетатьт или искать велосипед...
|