Ganz spontan, was mit so in der Sinn kommt:
// create DB object DbObbject *person = new DbObject; // setup object person->setTable("t_person"); person->addField(DbObject::ShortString, "vorname"); person->addField(DbObject::ShortString, "name"); person->addField(DbObject::Date, "birthday"); person->addField(DbObject::Integer, "num_computers"); person->addField(DbObject::String, "comment"); // query if(person->query("name", "Meyer")) { // print all fields qDebug() << person->toString(); // modify object person->setValue("comment", "The answer is 23!"); if(person->commit()) qDebug() << "Update successfully!"; else qDebug() << "Cannot update Meyer"; } else qDebug() << "Meyer not found";
Mark sagt: Ja das klingt ja schon gar nicht so schlecht! Ich denke auf der Basis können wir los diskutieren.
addField
war bei mir z.B. eine private Methode und sollte dann, eben nur im Konstuktor der Klasse Person verwendet werden,
so dass man bei new Person()
dann immer die gleiche Datenstruktur bekommt. (…) (schreibe heute abend weiter …)
Jens sagt: Aha, verstehe, also so ala:
class Person : public DbObject { public: Person(); void doSomePersonStuff(); }; Person::Person() { setTable("t_person"); addField(DbObject::ShortString, "vorname"); addField(DbObject::ShortString, "name"); addField(DbObject::Date, "birthday"); addField(DbObject::Integer, "num_computers"); addField(DbObject::String, "comment"); }
Wie hast du bei Dir so Informationen wie z.B. „Datenbank-Type“ und „Datenbank-Verbindung“ hinterlegt? Statische Methoden im Basis-Objekt? Oder anders?