Seite 1 von 1

Desgin einer Datenbankanwendung

Verfasst: 14. Juli 2007 21:31
von Wowbagger
Hallo zusammen,

ich bin neu in Sachen Qt. In C++ habe ich einige verschüttete Kentnisse aus dem Studium. Trotzdem möchte ich mich jetzt mal an einem kleinen Datenbankprojekt versuchen.

Dazu gleich die erste Frage. Ich habe mir überlegt, wie ich den Zugriff auf Spalten komfortabler machen kann. Meine Idee dazu möchte ich hier gerne Diskutieren und bin auch für Alternativvorschläge offen.

Ich leite die Klasse QSqlRecord ab und füge Funktionen hinzu, die mir eine bestimmt Spalte zurückliefern. Etwa so:

Code: Alles auswählen

class myRec : public QSqlRecord {

	public:
		int i;
		myRec(){
			i=5;
		};
				
	QString getSpalte0(){
		return value(0).toString();
	}

	QString getSpalte1(){
		return value(1).toString();
	}
	
	QString getSpalte2(){
		return value(2).toString();
	}
}
Passend dazu mache ich eine Klasse, die die gesamte Tabelle repräsentiert und mir die Zeilen als myRec zurückliefert:

Code: Alles auswählen

class myModel : public QSqlQueryModel {
	public:
		myRec record(int row) {
			QSqlRecord qr = QSqlQueryModel::record(row);
			return *static_cast<myRec*> (&qr);
		}
}
Meine Fragen dazu:

Die Verwendung von static_cast ist wohl eher nicht so optimal. Z.B. wird der Konstruktor von myRec nicht aufgerufen und "i" hat einen beliebigen Wert.
Wie kann ich das eleganter lösen?

Was haltet Ihr von dem Konzept? Das schöne ist m.E., daß man in myRec auch entsprechende Set-Methoden implementieren kann, die eine Gültigkeitsprüfung vornehmen.

Ich bin gespannt auf Eure Kommentare

Wowbagger

Verfasst: 14. Juli 2007 22:29
von upsala
Die Frage ist, was willst du mit den Daten weitermachen, wie willst du sie darstellen?

Verfasst: 14. Juli 2007 22:34
von Wowbagger
upsala hat geschrieben:Die Frage ist, was willst du mit den Daten weitermachen, wie willst du sie darstellen?
Z.B. in einer Tabelle anzeigen und in einem Formular bearbeiten.

Verfasst: 14. Juli 2007 23:09
von upsala
Dann versteh ich nicht, warum du das Model nicht direkt mit der View verbindest, sondern diese komische Konstruktion dazwischen haben willst. Schau dir wegen dem zurückschreiben, auch mal dieses Beispiel an.