Delphi-Datenbankkomponenten • Spezielle Programmbibliothek zum Erstellen von Datenbankanwendungen • Nutzt konsequent das (objektorientierte) Komponenten-Konzept von Delphi. – Kleinere Anwendungen erstellbar ohne Schreiben von ObjectPascalQuellcode – ObjectPascal-Anteile meist klein und lokal für einzelne Komponenten • Programm "Datenbankoberfläche": – Erstellung der Datenbankstruktur – Experimente mit der Datenbankstruktur (QBE-Anfragen) – Testhilfsmittel • Datenbankkomponenten: – Erstellung von durch Laien benutzbaren Windows-Programmen zur Dateneingabe und Datenbankabfrage Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) Typen von Datenbankkomponenten • Datenzugriff – Nichtvisuelle Komponenten – Repräsentation von Datenbanktabellen in der Entwicklungsumgebung – Beispiele: » Table » DataSource » Query • Datensteuerung: – – – – Visuelle Komponenten Datensensitive Bedienungselemente Müssen an Datenzugriffskomponenten gekoppelt werden Beispiele: » DBEdit » DBNavigator » DBGrid Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) Entwicklungsschritte einer einfachen Datenbankanwendung • Table-Komponente einfügen – Property "DatabaseName": Pfadname für Datenbank-Datei – Property "TableName": Datenbank-Datei (z.B. Stadt.db) – Hinweis: Höhere Flexibilität durch Einlesen aus Feldern oder durch Verwenden von Alias-Namen • DataSource-Komponente einfügen – Property "DataSet": Entsprechende Table-Komponente • Oberfläche mit Datensteuerungs.Komponenten entwerfen – Property "DataSource": entsprechende DataSource-Komponente – Property "DataField": ggf. gewünschtes Datenfeld der Tabelle • Property "Active" der Table-Komponente auf "true" setzen – Datenbankzugriff erfolgt (zur Entwurfszeit) • Programm übersetzen und starten – Datenbankzugriff erfolgt (zur Laufzeit) Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) Virtuelle Felder • Werte für virtuelle Felder einer Tabelle werden indirekt ermittelt • Hinzufügen "virtueller Felder" zu einer Table-Komponente: – Doppelklicken von Table und Kontextmenü (rechte Maustaste) • Arten virtueller Felder: – Berechnete Felder – Fremdschlüssel-Zugriff (Lookup) » Tabellenverbindung herstellen • Nach geeigneter Konfiguration können virtuelle Felder wie normale Datenfelder genutzt werden Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) Datenbanksprache SQL • Structured Query Language – 70er Jahre, Ursprung IBM – Standardisiert (ANSI) • Verwendungsarten: – Direkte Kommandosprache für relationale Datenbanksysteme – Einbettung in Datenbankkomponenten (Delphi-Komponente Query) – Einbindung in Quellcode verschiedener Programmiersprachen, z.B. COBOL, C, Java » "EXEC SQL <SQL-Text>" Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) SELECT-Anweisungen in SQL • Syntax: SELECT <Feldliste> FROM <Tabellenliste> WHERE <Einschränkende Bedingung> • Beispiele: SELECT STADT, EWZ, LAND FROM Stadt SELECT STADT, EWZ, LAND FROM Stadt WHERE EWZ > 50000 SELECT STADT, EWZ, NAME FROM Stadt2, Land WHERE Stadt2.LAND = Land.LAND_CODE Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) SQL-Anfragen in Datenbankkomponenten • Query-Komponente – Datenzugriffskomponente – Ähnlich einzusetzen wie Table-Komponente – Enthält SQL-Text (dadurch sehr flexibel) • Entwicklungsschritte: – Query-Komponente einfügen » Property "DatabaseName": Pfadname für Datenbankdatei » SQL-Text eintragen – DataSource-Komponente einfügen » Property "DataSet": entsprechende Query-Komponente – Nutzung der DataSource in Oberflächen-Elementen – Property "Active" der Query-Komponente auf "true" setzen » Datenbankzugriff erfolgt (zur Entwurfszeit) – Programm übersetzen und starten » Datenbankzugriff erfolgt (zur Laufzeit) Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) Direkte Datenbankoperationen • Für eine Tabelle (Objekt vom Typ TTable) kännen in Delphi auch direkt in ObjectPascal Abfragen und Modifikationen durchgeführt werden. – Eine genaue Liste der Methoden liefert die Delphi-Online-Hilfe unter dem Stichwort "TTable". • Beispiele für Methoden von TTable: – Open: Äquivalent zum Setzen der Property "Active" auf true – First, Next, EOF, Last, Prior, BOF: Zugriff über Satzzeiger (sh. separate Folie) – Edit: Setzt Editiermodus für Tabelle – Post: Schreibt modifizierten Datensatz zurück in die Tabelle • Zugriffe auf aktuelle Datenfeldwerte der Tabelle (an der aktuellen Satzzeigerposition): – <Tabellenname>['<Feldname>'] (Zugriff über Feldname) – <Tabellenname>.Fields[<integer>] (Zugriff über lfd. Nummer des Feldes, mit 0 beginnend) Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen) Schriftliche Berichte erstellen • Ein wesentlicher Zweck von Datenbanken ist die Erstellung schriftlicher Berichte: – Gehaltslisten, Statistiken, Bestellungen, Rechnungen, ... • Sogenannte "QuickReport"-Komponenten ermöglichen eine schnelle interaktive Erstellung dieser speziellen Abfragen. • Arbeitsschritte: – QuickRep-Komponente einfügen » Property "Bands": Gewünschte Teilbereiche » Property "DataSet": Tabelle für Gesamtliste – Weitere QuickReport-Komponenten einfügen und konfigurieren: » QRLabel: Überschriften, Texte » QRDBText: Wiedergabe von Datenfeldinformation • Property "DataSet": Tabelle für dieses Datenfeld • Property "DataField": Entsprechendes Datenfeld » QRExpr: Berechnen von Ausdrücken über Datenbestand • Interaktiver Editor Technische Universität Dresden Prof. Hußmann Informatik II (Maschinenwesen)