Witam,
może w ramach wprowadzenia do wątku powiem, iż ogólnie programista ze mnie średni, a z Qt mam ponieką "trochę" doczynienia za sprawą projektu zespołowego, który robiliśmy na zaliczenie zajęć uczelnianych.. (kumpel bardziej preferuje Qt niż te wszystkie popularne Javy, C#y etc...Mnie osobiście też się Qt spodobał ;)).

Ale do rzeczy..

Chciałbym tutaj odnieść się do kwestii projektowania aplikacji bazodanowej.. Do tej pory w ramach wspomnianego już projektu zespołowego robiliśmy tak, iż operacje dodawania/edytowania/usuwania np. użytkowników wykonywaliśmy na zasadzie poniższego (pseudo)kodu:

 
QString query= "select * from uzytkownicy";
MySql->SelectRow(query);  //to przygotowana przez Nas klasa

następnie dane były ładowane np. do QStringList i przekazywane na kontrolki lineEdit->text(); (lub coś w ten deseń..)

Pewnie można tu zastosować trochę inną "metodę", np. stosując klase QSqlQuery:

 
     QSqlQuery query;
     query.prepare("INSERT INTO person (id, forename, surname) "
                   "VALUES (?, ?, ?)");
     query.addBindValue(1001);
     query.addBindValue("Bart");
     query.addBindValue("Simpson");
     query.exec();

(tworząc tak zapytania zachowuje się większy poziom bezpieczeństwa ? Coś chyba tak czytałem kiedyś..)

..ale ogólnie chciałbym odnieść się do kwestii wykorzystania podejścia model/view i realizacji "obiektowości" z której wynika podział na warstwy aplikacji..

Z tego co niegdyś czytałem (sam użyłem tego po części w innym moim projekcie w C#) np. przy wyciąganiu danych o uzytkownikach z DB, warto stworzyć klasę uzytkownik, w której będą "czasowo" przetrzymywane dane i za pomocą metod umieszczane np. w bazie danych.. Natomiast przeglądając sobie przykłady ( http://qt-project.org/doc/qt-4.8/examples-sql.html ) z Qt-Project na temat SQLa, głównie są one oparte na architekturze model/view, która nijako ma się do podejścia obiektowego.. (przynajmniej w tych przykładach tego nie ma..).

Więc teraz pytanie, które mi się nasunęło - czy w Qt zalecane jest używanie podejścia model/view i operowanie na danych, wyświetlanie danych w tabelach, etc właśnie z wykorzystaniem modeli i przygotowanych pod to klas..? Czy może lepiej byłoby "olać" tą architekture i samemu przygotować klasy i metody w których i tak na końcu skorzysta się z QSqlQuery do operowania na bazie ? A może te dwa "podejścia" można jakoś użytecznie połączyć?

[Napomnę tylko, iż z tego co czytałem w Javie czy C# stosuje się ORMy (np. framework hibernate), które de facto też działają właśnie na podejściu obiektowym..]

Uff, to chyba tyle ode mnie.. (mam nadzieje, że to co napisałem jest zrozumiałe ;) )
Pozdrawiam,
Marcin