dbExpress Framework-Kompatibilität
Nach oben zu Datenbankanwendungen für die Win32-Plattform entwickeln - Index
Teile der dbExpress-Software, die vor dem Erscheinen des dbExpress-Treiber-Framework (DBX-Treiber-Framework) entwickelt wurden, mussten für die Zusammenarbeit mit dem DBX-Treiber-Framework verändert werden. Dies hat zu einigen Kompatibilitätsproblemen geführt.
Allgemein
dbExpress 2.5-Treiber können nicht mit dem DBX-Framework verwendet werden.
Das dbExpress-Framework bietet keine 100% Kompatibilität mit dbExpress 3.
dbExpress 3-Treiber können mit dem DBX-Framework verwendet werden. Der Treiberlademechanismus des DBX-Framework erkennt dbExpress 3-Treiber automatisch und passt mithilfe des DBXAdapter-Treibers (dbxadapter30.dll) einen dbExpress 3-Treiber an einen dbExpress 4-Treiber an.
Im Folgenden finden Sie eine Liste der bekannten Kompatibilitätsprobleme:
- Statische Treiberbindung. dbExpress-Treiber können nicht statisch in eine ausführbare Datei gelinkt werden.
- SqlExpr.TSQLConnection stellte eine geschützten Zugriff auf das Connection-Member bereit, das nur in der nativen Version von SqlExpr.pas den Typ TISQLConnection hatte. Diese wurde in der verwalteten Version wegen der Komplexität weggelassen, mit der PInvoke in der verwalteten Version der dbExpress VCL verwendet wurde. SqlExpr.TSQLConnection stellt nun stattdessen einen geschützten Zugriff auf Data.DBXCommon.TDBXConnection bereit. Auf diese geschützte Verbindung können native und verwaltete Anwendungen zugreifen.
- Das Ereignis für die Ablaufüberwachung ist leicht verändert, weil es auf dem DBX-Treiber-Framework basiert.
- Der DBXAdapter-Treiber kann dbExpress 3-Treiber an dbExpress 4 anpassen, aber keine dbExpress 2.5-Treiber.
VCL-Probleme
Die meisten Anwendungen, die dbExpress VCL-Komponenten verwenden, können mit dieser Modifikation arbeiten. Es gibt jedoch einige lokalisierte Änderungen an VCL-Komponenten, weil die VCL jetzt mit dem mehr objektorientierten DBX-Treiber-Framework anstatt mit dem C-ähnlichen COM-basierten dbExpress 3-Treiber-Interface interagiert.
Außerdem wurde die API für zwei VCL-Komponenten leicht verändert: Data.SqlExpr.TSQLConnection und Data.SqlExpr.TSQLDataSet. Es wurden auch einige Datenstrukturen verändert. In Folgenden finden Sie eine Zusammenfassung der API-Änderungen.
Anmerkung: Wegen der API-Änderungen müssen Sie die mit dem Produkt ausgelieferte Unit SqlExpr.pas neu compilieren. Die Unit DBXpress wird nicht mehr verwendet.
- TSQLConnection. Anstatt der Methode Commit wird nun die neue Methode CommitFreeAndNil verwendet. Anstatt der Methode Rollback werden nun die neuen Methoden RollbackFreeAndNil und RollbackIncompleteFreeAndNil verwendet. Die Methode SetTraceCallbackEvent wurde durch SetTraceEvent ersetzt. Anstatt der Methode StartTransaction wird nun die neue Methode BeginTransaction verwendet. Die Eigenschaft MetaData enthält eine Instanz der neuen Klasse Data.DBXCommon.TDBXDatabaseMetaData anstelle von TISQLMetaData. Die Eigenschaft SQLConnection wurde durch DBXConnection ersetzt, die eine Instanz der neuen Klasse Data.DBXCommon.TDBXConnection enthält. Die Eigenschaft TraceCallbackEvent enthält nun ein TDBXTraceEvent.
- TSQLDataSet. Die neue Eigenschaft DbxCommandType wurde hinzugefügt. Sie enthält einen der Konstanten-Strings aus der Klasse Data.DBXCommon.TDBXCommandTypes.
- Datenstrukturen. TTransactionItem wurde durch die neue Klasse Data.DBXCommon.TDBXTransaction ersetzt. TSQLDriverOption, TSQLConnectionOption, TSQLCommandOption, TSQLCursorOption, TSQLMetaDataOption und TSQLObjectType sind veraltet. TSTMTParamType wurde durch die Klasse Data.DBXCommon.TDBXParameterDirections ersetzt. TSQLTraceFlag wurde durch Data.DBXCommon.TDBXTraceFlags ersetzt. SQLTRACEDesc wurde durch TDBXTraceInfo ersetzt.