cloidnerux hat geschrieben:Mit C++ stellt sich mir die Frage, welches Framework du verwenden willst.
MySQL-Connector.
cloidnerux hat geschrieben:Aber so wie ich das in Erinnerung habe, werden in den meisten Frameworks die SQL-Befehle als String übergeben.
Genau das möchte ich mit dem generierten Code kapseln - nur eben auf die Datenbankstruktur zugeschnitten. Daher soll der Code aif Nasis der in XML-beschriebenen Datenbankstruktur erstellt werden.
cloidnerux hat geschrieben:Ich würde die Implementation so wählen, dass dein Programm eine Klasse generiert, die Festgelegte Methoden hat, die du dann dynamisch mit Inhalt füllst, z.B initDB, initTable, etc.
s.u.
Xin hat geschrieben:Ich verstehe jetzt "Objekte ummauern" nicht, aber die Struktur der Datenbank hast Du ja bereits in Deinem XML-Format ausgedrückt.
Und auf diese beschriebene Struktur möchte ich (z.B. in PHP) verwenden,
ohne direkt mit SQL zu arbeiten, d.h. ich kapsle die SQL-Befehle in Methoden.
Beispiel: Zur Tabelle User wird eine Klasse User erstellt. Sie beeinhaltet für jede Spalte ein Attribut (public member). Neben dem Konstruktor besitzt sie zusätzlich Methoden
add (führt für diese Instanz ein -INSERT durch),
store (führt ein UPDATE durch),
destroy (führt ein DELETE durch) und mehrere
getByXY (führt ein SELECT durch, wobei XY das entsprechende Attribut/die entsprechende Spalte ist, nach der bzgl. eines Wertes gesucht wird).
Effektiv sollen die Datensätze der Tabellen durch Instanzen der Klassen ausgedrückt werden. Ich weiß nicht ob das schon der Definition eines ORM entspricht ..
Xin hat geschrieben:Glocke hat geschrieben:Die XML-Datei baue ich von Hand.
...warum?
Dann habe ich eine XML-Datei die meine Datenbank beschreibt. Diese zu ändern ist wesentlich kürzer, als die Implementierungen der Klassen anzupassen (das macht dann das Skript für mich). Ich muss dann lediglich die eigentliche Datenbankstruktur anpassen (könnte ich vom Skript auch machen lassen, indem ich ALTER TABLE's erzeuge - aber das ist an der Stelle ja auch erstmal egal).
Xin hat geschrieben:Ich glaube, es gibt XML-Datenbanken, ob es einen XML-Connector zu MySQL gibt, weiß ich ehrlich gesagt nicht. Für mich stellt sich immer wieder die Frage nach dem warum!?
Und was soll Dein Skript eigentlich in C++ erzeugen?
Es soll Klassen erzeugen (s.o.). Btw habe ich dabei die interne Verwendung der MySQL-Connector-Geschichte im Kopf.
Xin hat geschrieben:Ich arbeite halt daran, aus C++-Klassen SQL und XML zu machen - habe aber PHP nicht dazwischen.
Habe ich auch nicht! Ich will die Datenbank beschreiben und dann (unabhängig voneinander) PHP-Code und/oder C++-Code erzeugen - damit ich sowohl aus einer PHP- als auch aus einer C++-Anwendung auf die Datenbank zugreifen kann.
Wie gesagt: die direkte Verwendung von SQL (d.h. die Query-Strings) will ich kapseln. Allein das Vorbereiten des Prepared Statements mit allen Parametern sind schon ein paar Zeilen. Das sollen mir die aus dem XML generierten Klassen abnehmen.
Ich hoffe ich konnte es ausreichend erklären, was ich eigentlich vorhabe - vermutlich gibt es sowas noch nicht
LG Glocke