Delphi-Datenbankkomponenten Spezielle Programmbibliothek zum Erstellen von Datenbankanwendungen Nutzt konsequent das (objektorientierte) Komponenten-Konzept von Delphi. Kleinere Anwendungen erstellbar ohne Schreiben von ObjectPascal-Quellcode 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
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 DBEdit DBNavigator DBGrid
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)
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
Datenbanksprache SQL Structured Query Language Verwendungsarten: 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>"
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
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)
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)
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