Home » Tutorials » Datenbanken » Object Persistence Framework

Object Persistence Framework

Das erste Programm

Starten wir mit dem „Hallo Welt“ Programm der Datenbankprogrammierung: Einer Adressenverwaltung. Bauen wir uns dazu erst mal die Oberfläche zusammen:

Die Komponenten:
eine TDataSource, einen TDBNavigator, je ein TLabel und ein TDBEdit für Name,
Vorname, Strasse, Nummer, PLZ und Ort. Die DB-Komponenten mit dem DataSource verbinden (Eigenschaft DataSource auf das DataSource setzen).
Kommen wir nun zu den IO und damit zu unserer Datenklasse. IO bietet einen visuellen Designer in dem die Klassen definiert werden können. In der Delphi IDE könnt ihr den Designer mit SHIFT+STRG+M öffnen oder im Menü Ansicht – InstantObjects Modell Explorer:

Als erste Aktion müssen wir dem Explorer mitteilen, in welchen Units er die
Businessklassen speichern soll. Legt dazu einfach eine neue Unit an (speichern nicht vergessen!) und weist diese dem Model Explorer über den Klick auf das erste Icon im IOExplorer zu:

So… nun können wir uns an die Klasse machen. Schließt das Fenster mit OK. Mit dem Kontextmenü des IO-Explorers könnt Ihr nun eine Klasse anlegen. Dazu auf den leeren Bereich des Explorers einen Mausklick mit der rechten Maustaste und im Menü „New Class“ auswählen:

Füllt den Dialog wie oben angegeben aus. Wichtig dabei nebem dem Klassennamen die Einstellung „Persistence“, die angibt, ob für die Klasse in der Datenbank eine eigene Tabelle angelegt wird.
Im Register „Attributes“ könnt Ihr dann die Felder definieren (im Kontextmenü oder mit der Taste „Einfügen“):

Alle Felder sind vom Typ String, die Feldlänge müsst Ihr bei diesem Typ auch festlegen. Eine ID ist nicht notwendig, wie Ihr im unteren Bereich des Dialogs sehen könnt, bekommt unser Objekt schon ein Feld vererbt.
Wenn Ihr nun die Fenster mit „OK“ verlasst, werdet Ihr feststellen, dass IO in der zugewiesenen Unit die Klasse schon erstellt hat. Für alle Felder gibt es Get- und Set-Methoden und die Felder sind von speziellen Typen (Klassen) von IO abgeleitet.
Erstellen wir nun die Datenbank. Über das 2. Icon im IO-Explorer könnt Ihr die Datenbank erstellen bzw. aktualisieren. Nach dem Aufruf öffnet sich der Database Builder:

Über das Kontextmenü könnt Ihr eine neue Verbindung anlegen. Ihr bekommt dort alle von euch installierten Broker angezeigt, wenn die Liste also leer ist, dann kontrolliert bitte Eure Installation!
Nach dem Anlegen einer Verbindung müsst Ihr die Verbindungsparameter noch einstellen. Dazu einfach die eben angelegte Verbindung editieren (über das Kontextmenü):

Je nach verwendetem Broker könnt Ihr hier mehr oder weniger unterschiedliche Einstellungen vornehmen. Nachdem das geschafft ist, das Fenster mit OK schließen und dann im „Database Builder“ auf den Button „Build“. Es öffnet sich ein neues Fenster, dort die Buttons „Show Build Sequenze“ und anschließend „Build Database“ betätigen. Vor dem Erzeugen der Datenbank kommt eine Sicherheitsabfrage, da beim Erzeugen eine evtl. Bestehende Datenbank gelöscht wird und mit ihr alle Daten.
Als letzten Schritt müssen wir noch der Anwendung beibringen, wo die Daten gespeichert werden sollen. Dazu folgende Komponenten aus dem Register InstantObjects dem Projekt hinzufügen: den entsprechenden Instant Connector (bei mir dann TInstantUIBConnector) und TInstantSelector, sowie die notwendigen Datenbankverbindungskomponenten (bei UIB TUIBDatabase). Die Datenbankkomponenten entsprechend konfigurieren und dann die InstantConnector Komponente mit der DB verbinden und schließlich den InstantSelector mit der InstantConnector Komponente verbinden.
Beim InstantSelector kommen dann noch folgende Einstellungen: Die Eigenschaft „ObjectClassName“ wird auf TAdresse gesetzt und die Eigenschaft „Command“ folgendermaßen:

Wenn Ihr in der ersten ComboBox die TAdresse auswählt, werden die restlichen notwendigen Daten automatisch eingetragen.
Jetzt können wir in den DBEdits die Felder zuweisen. Die DataSource haben wir ja schon zu Beginn zugewiesen, jetzt also einfach noch die notwendigen Felder auswählen.

Zum Abschluss müssen wir noch dafür sorgen, dass beim Programmstart die Datenbankverbindung hergestellt wird. Dazu einfach im OnCreate die Verbindung der Datenbankkomponente herstellen, den InstantConnector verbinden, sowie den InstantSelector öffnen:

procedure TForm1.FormCreate(Sender: TObject);
begin
  JvUIBDataBase1.Connected:=true;
  InstantUIBConnector1.Connect;
  InstantSelector1.Open;
end;

Jetzt das Projekt gleich noch einmal speichern und dann starten. Die Bedienung des Programms sollte eigentlich eigentlich keine Probleme verursachen.