dbExpress Framework Compatibility
Some dbExpress software developed prior to the dbExpress driver framework (DBX driver framework) has been modified to work with the DBX driver framework. As a result of these changes, some compatibility issues arise.
dbExpress 2.5 drivers cannot be used with the DBX framework.
The dbExpress framework does not provide 100% compatibility with dbExpress 3.
dbExpress 3 drivers can be used with the DBX framework. The DBX framework driver loader automatically detects dbExpress 3 drivers and uses the DBXAdapter driver (dbxadapter30.dll) to make a dbExpress 3 driver look like a dbExpress 4 driver.
Here is a list of known compatibility issues:
- Static driver linkage. You cannot statically link dbExpress drivers into an executable.
- SqlExpr.TSQLConnection provided protected access to the Connection member that was of type TISQLConnection only in the native version of SqlExpr.pas. This was omitted from the managed version due to the complexity of how PInvoke was used in the managed version of the dbExpress VCL. SqlExpr.TSQLConnection now provides protected access to a Data.DBXCommon.TDBXConnection instead. This protected connection is accessible to both native and managed applications.
- The event for trace monitoring is slightly different because it is based on the DBX driver framework.
- The DBXadapter driver can adapt dbExpress 3 drivers to dbExpress 4, but not dbExpress 2.5 drivers.
Most applications using dbExpress VCL components should work without modification. However, there are some localized changes to VCL components due to VCL now interfacing to the more object oriented DBX driver framework instead of the C-like COM-based dbExpress 3 driver interface.
In addition, the API has changed slightly for two of the VCL components: Data.SqlExpr.TSQLConnection and Data.SqlExpr.TSQLDataSet. Some data structures have also changed. A summary of the API changes follows.
- TSQLConnection. The Commit method has been deprecated in favor of the new CommitFreeAndNil method. The Rollback method has been deprecated in favor of the new RollbackFreeAndNil and RollbackIncompleteFreeAndNil methods. The SetTraceCallbackEvent method has been replaced by SetTraceEvent. The StartTransaction method has been deprecated in favor of the new BeginTransaction method. The MetaData property contains an instance of the new class Data.DBXCommon.TDBXDatabaseMetaData instead of TISQLMetaData. The SQLConnection property has been replaced by DBXConnection, which contains an instance of the new class Data.DBXCommon.TDBXConnection. The TraceCallbackEventproperty now contains a TDBXTraceEvent.
- TSQLDataSet. A new property DbxCommandType has been added, which contains one of the constant strings in the Data.DBXCommon.TDBXCommandTypes class.
- Data structures. TTransactionItem has been deprecated, replaced by the new Data.DBXCommon.TDBXTransaction class. TSQLDriverOption, TSQLConnectionOption, TSQLCommandOption, TSQLCursorOption, TSQLMetaDataOption, and TSQLObjectType are obsolete. TSTMTParamType has been replaced by the Data.DBXCommon.TDBXParameterDirections class. TSQLTraceFlag has been replaced by Data.DBXCommon.TDBXTraceFlags. SQLTRACEDesc is replaced by TDBXTraceInfo.