In SDAC the interests of BDE application developers were taken into consideration. So starting to use SDAC after working with BDE would be easy even for developing complex projects. Moreover, SDAC does not have problems like ones with LiveQuery and compatibility of applications developed using different versions in BDE. On SDAC developing BDE users interests were taken in consideration so conversion from using BDE into SDAC can be passed without difficulties even for complex projects. Moreover, SDAC does not have problems appropriated BDE with LiveQuery and compatibility of different programs that were developed using different BDE version and so on.
Abandoning BDE gives one more important advantage - positive effect on performance. Instead of complex BDE-ODBC drivers system
it uses the fastest access - directly to Microsoft SQL Server.
SDAC provides special Wizard to simplify the conversion of already existing projects. This Wizard replaces BDE-components in the specified project (dfm-and pas-files) to SDAC. BDE-components that will be replaced:
- TDatabase -> TMSConnection
- TQuery -> TMSQuery
- TTable -> TMSTable
- TStoredProc -> TMSStoredProc
- TUpdateSQL -> TMSUpdateSQL
To run the Wizard select BDE/ADO Migration Wizard item in SDAC menu and follow the instructions. This Wizard is available only for Delphi IDE.
Note: Wizard serves only to simplify routine operations and after the conversion project might be uncompiled.
Below is a list of properties and methods that cannot be converted automatically. Here you can find hints for users to simplify manual replacement.
- AliasName - specific BDE property.Not supported by SDAC.
- DatabaseName - has a different meaning in BDE and SDAC. In SDAC it means SQL Server database name. See TCustomMSConnection for details.
- Locale - not supported by SDAC.
- KeepConnection - not supported by SDAC.
- Params - see TCustomMSConnection properties.
- Session, SessionAlias, SessionName - SDAC does not need global management of a group of database connections in an application. So these properties are not supported.
- Temporary - has no meaning in SDAC. Additional connections are created but they are not available for the user. See FetchAll = False for details.
- TraceFlags - see TCustomDASQLMonitor.TraceFlags.
- TransIsolation - see IsolationLevel.
- Execute - use ExecSQL instead of this method.
- FlushSchemaCache - not supported by SDAC.
- GetFieldNames - not supported by SDAC.
- IsSQLBased - not supported by SDAC. For SQL Server must be always True.
- ApplyUpdates - parameters are not supported. To update only specified DataSets, use ApplyUpdates. Update is performed within a transaction.
- BlockReadSize - see FetchRows.
- CacheBlobs - SQL Server does not provide service of suspended BLOB loading.
- KeySize - specific BDE property. Not supported by SDAC.
- DefaultIndex - not used in SDAC. If you need to sort a table by any field see TCustomMSTable.OrderFields, TMemDataSet.IndexFieldNames.
- Exists, CreateTable, AddIndex, DeleteIndex, StoreDefs, Deletetable, TableType - SDAC does not allow to create tables using TTable. If you need to create a table execute 'CREATE TABLE ...' query or use any special third-party tools.
- IndexFieldNames - a list of fields for local sorting. See TMemDataSet.IndexFieldNames.
- IndexDefs, IndexFieldCount, IndexFields, IndexFiles, IndexName, GetIndexNames, GetIndexInfo - Not supported by SDAC.
- KeyExclusive - not supported by SDAC. Use SELECT ... FROM .. WHERE ... to get requested result .
- KeyFieldCount - not supported by SDAC as key fields are not used for searching on client side.
- TableLevel - BDE-specific property. Not supported by SDAC.
- ApplyRange, CancelRange, EditRangeStart, EditRangeEnd, SetRange - SDAC does not support Range.
- BatchMove - has no meaning in SQL Server. Use SELECT ... INTO ... syntax to copy records to server side.
- FindKey, FindNearest, GotoCurrent, GotoKey, GotoNearest, EditKey, SetKey - use TMemDataSet.Locate and TMemDataSet.LocateEx.
- GetDetailLinkFields - use TCustomDADataSet.DetailFields, TCustomDADataSet.MasterFields.
- RenameTable - use 'RENAME TABLE ...' script.
- ConstraintCallBack, ConstraintsDisabled, DisableConstraints, EnableConstraints - has no meaning in SQL Server.
- FlushBuffers - not supported by SDAC.
- Translate - use AnsiToNative and similar functions.
SDAC does not need global management of a group of database connections in an application.
A complete analogue to TMSUpdateSQL.