Übersicht über die Funktionen von dbExpress

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenbankanwendungen für die Win32-Plattform entwickeln - Index


Das Framework von dbExpress und die Metadatenunterstützung wurden in Delphi für RAD Studio 2007 neu geschrieben. Es bietet nun eine neue, umfangreichere Unterstützung von Metadaten.

Der DbxClient-Treiber stellt über einen Netzwerktransport die Verbindung zur Schnittstelle des dbExpress 4-Frameworks her.

Dieses Dokument behandelt die folgenden Themen:

  • dbExpress-Framework
  • dbExpress-Metadatenunterstützung
  • DBXClient-Treiber
  • DBXDynalink-Treiber
  • DBTest

dbExpress-Framework

VCL

Die Implementierung der dbExpress-Komponenten der VCL wurden mit nur geringen Auswirkungen auf die API geändert. Die meisten Anwendungen sind von den Änderungen der dbExpress-VCL nicht betroffen. Es gibt jedoch einige neue Methoden, Eigenschaften, Ereignisse, Konstanten und Aufzählungen.

dbExpress-Metadatenunterstützung

Neue Metadaten-Provider für 9 unterschiedliche Datenbank-Backends wurden vollständig in Delphi geschrieben. Der komplette Quellcode für alle diese Metadaten-Provider ist im Produkt enthalten.

Funktionen zum Schreiben und Lesen von Metadaten

Jeder Provider setzt sich aus einer Implementierung zum Schreiben und zum Lesen von Metadaten zusammen, die in dbExpress-Treiber-Packages enthalten sind. Die einzelnen Metadatenlese- und -schreibfunktionen, die in den Packages DbxReadOnlyMetaData und DbxMetaData enthalten waren, gibt es nicht mehr.

Provider-basierender Ansatz

Die Metadaten-Provider sind vom Treiber getrennt, sodass ein Metadaten-Provider für mehrere Treiberimplementierungen verwendet werden kann, solange das Datenbank-Backend dasselbe bleibt. Auch der Daten-Explorer stützt sich auf Metadaten-Provider, um Metadaten-Unterstützung für Treiber anderer Datenbanken bereitzustellen.

Der Provider ist nicht an einen Treiber, sondern an ein Datenbank-Backend gebunden. Es gibt in den dbxdrivers.ini-Dateien die neue Eigenschaft TDBXPropertyNames.MetaDataPackageLoader, die auf ein TDBXCommandFactory-Objekt festgelegt werden kann. Diese Implementierung eines Befehlsgenerators erstellt ein TDBXCommand-Objekt, das die Metadatenbefehle ausführt. Dieser Ansatz erlaubt, dass mehrere Treiber für spezielle Datenbank-Backends denselben Metadaten-Provider verwenden. Auch der Daten-Explorer nutzt diese Architektur, um strukturierte dbExpress 4-Metadaten für Treiber anderer Anbieter bereitzustellen. Die Entkoppelung von Treiber und Metadatenprovider führt außerdem zu schlankeren Treiberimplementierungen. Wenn Metadatenbefehle auf dem Server ausgeführt werden können, ist es nicht mehr notwendig, diese Programmlogik im Client vorzusehen.

Provider-Quellverzeichnis

Der gesamte Datenbankquellen befinden sich nun im folgenden Installationsverzeichnis:

C:\Program Files (x86)\Embarcadero\Studio\19.0\source\database

Lesen von Metadaten

Die neue Unit DBXMetaDataNames wurde zum Lesen von Metadaten bereitgestellt. Die dbExpress-Klasse TDBXMetaDataCommands stellt Konstanten zum Lesen verschiedener Metadatentypen bereit. Setzen Sie die Eigenschaft Data.DBXCommon.TDBXCommand.CommandType auf Data.DBXCommon.TDBXCommandTypes.DBXMetadata und Data.DBXCommon.TDBXCommand.Text auf eine Konstante aus TDBXMetaDataCommands, um die gewünschten Metadaten zu ermitteln. Data.DBXCommon.TDBXCommand.ExecuteQuery gibt für den Zugriff auf die Metadaten einen Data.DBXCommon.TDBXReader zurück. Die neuen Klassen in DBXMetaDataNames beschreiben den Zugriff auf die Metadatenspalten und ermöglichen diesen.

Schreiben von Metadaten

Der Daten-Explorer unterstützt die Erstellung von dialektsensiblen SQL-Anweisungen wie CREATE, ALTER und DROP. dbExpress bietet mit der Klasse DbxMetaDataProvider Anwendungen die Möglichkeit, diese Funktionen zu nutzen. Dadurch erhöht sich etwas die Größe der Anwendungen, da Metadaten-Writer mit aufgenommen werden müssen. Die Möglichkeit, auf generische Weise Tabellen zu erstellen, ist für viele Anwendungen nützlich. Die Schnittstelle erlaubt Ihnen zu beschreiben, wie eine Tabelle und ihre Spalte aussehen soll, und diese Beschreibung dann der Methode TdbxMetaDataProvider.CreateTable zu übergeben. Hier ein einfaches Beispiel, das zeigt, wie eine Tabelle mit einer Spalte des Typs int32 namens "C1", einer Spalte "C2" mit einer Genauigkeit von 10 und 2 Nachkommastellen und der Spalte "C3" mit einer Länge von 32 Unicode-Zeichen erstellt wird.

var MetaDataTable: TDBXMetaDataTable; DataGenerator: TDbxDataGenerator; Command:
    TDBXCommand; Row: Integer; begin MetaDataTable := TDBXMetaDataTable.Create;
    MetaDataTable.TableName := 'QCXXX_TABLE'; MetaDataTable.AddColumn(TDBXInt32Column.Create('C1'));
    MetaDataTable.AddColumn(TDBXDecimalColumn.Create('C2', 10, 2));
    MetaDataTable.AddColumn(TDBXUnicodeCharColumn.Create('C3', 32));
    MetaDataProvider.CreateTable(MetaDataTable); end

Deployment

Informationen über das Deployment von Datenbankanwendungen finden Sie unter Datenbankanwendungen weitergeben.

Kompatibilität

Die VCL-Komponenten in der Unit SqlExpr arbeiten noch immer mit Treibern zusammen, die den eingeschränkteren Satz von dbExpress 3-Metadaten bereitstellen. Der Daten-Explorer arbeitet jedoch nur mit dbExpress 4-Metadaten.

Beachten Sie, dass Delphi Metadaten für 9 verschiedene Datenbank-Backends bereitstellt. Daher kann jede dbExpress-Treiberimplementierung für die 9 unterstützten Backends die Metadaten-Provider in ihrer Implementierung wiederverwenden.

DBXClient-Treiber

DBXClient ist ein schlanker dbExpress 4-Treiber, der die Verbindung zur Schnittstelle des dbExpress 4-Frameworks über einen austauschbaren Netzwerktransport herstellt. In dieser Version wird ein TCP/IP-Transport unterstützt. Der Treiber verwendet ein auf JSON/RPC (Java Script Object Notation) basierendes Protokoll.

Die DBXClient-Implementierung ist in reinem Object Pascal geschrieben. Der Quellcode liegt dem Produkt bei.

Konnektivität

DBXClient kann eine Verbindung zu DataSnap herstellen. DataSnap stellt einen Anwendungsserver der mittleren Schicht bereit, der externe Datenmodule enthält und verwaltet. DataSnap wurde verbessert, um einen allgemeinen Verbindungsmechanismus zwischen Komponenten in verschiedenen Schichten zu ermöglichen.

Um den DBXClient-Treiber zusammen mit DataSnap verwenden zu können, müssen Sie die Unit DBXClient in die uses-Klausel aufnehmen.

Deployment

DBXClient benötigt keine installierte Client-Bibliothek zum Deployment einer Anwendung. Da DBXClient ein 100%iger Delphi-Treiber ist, kann er direkt mit der Exe-Datei der Anwendung gelinkt werden.

Weitere Informationen über das Deployment von Datenbankanwendungen finden Sie unter Datenbankanwendungen weitergeben.

DBTest

Dies ist eine Kollektion von Klassen, die die Möglichkeiten von DUnit zum Test von Datenbanken erweitern. Die DUnit-Beispieltests qcreport und cts zeigen anschaulich, wie DBTest verwendet wird. TestCaseExtension enthält nicht datenbankbezogene Erweiterungen von DUnit, und die Unit DBXTest enthält datenbankbezogene Erweiterungen.

Kommandozeileneigenschaften

Für alle 8 Dynalink-Treiber wurden neue Units in das Package DbxDynalinkDriver aufgenommen:

Testauswahl

Die Angabe -s:<TestName> kann in der Kommandozeile verwendet werden, um nur eine einzige Methode in einem DUnit-Testfall auszuführen. Dies ist sinnvoll, wenn nur ein einzelner Fehler aufgespürt werden muss. Weitere Informationen finden Sie in der Unit TestCaseExtension.

Nützliche Methoden

Es gibt mehrere Methoden zur Erstellung einer Standardverbindung und eines Metadaten-Providers. Weitere Informationen finden Sie in der Unit DBXTest.

Datengenerator

Es gibt einen einfachen, erweiterbaren Datengenerator. Weitere Informationen finden Sie in der Unit DBXDataGenerator.

Siehe auch