Moving to FireDAC

Brief history of BDE to DBExpress to FireDAC; why FireDAC is the right choice with up to 20% performance improvement.

Why urgency is critical

BDE deprecated since 2002, removed from installer since XE8, no 64-bit support. ADO installer increasingly problematic.

Moving to FireDAC

RAD Studio has a long tradition of providing components for connecting to data. In fact, the Delphi project name came from the Greek stories that stated to get to the Oracle, you go to Delphi.

The BDE era

Those who started working with Delphi or C++Builder in the 1990s or early 2000s would likely be familiar with the BDE (Borland Database Engine). In its time, BDE was a software library (similar to ODBC) that allowed developers to write complex database applications in a matter of minutes.

Why the stack started to hurt: While BDE was still widely used for flat-file and desktop database engines such as Paradox and dBase, Embarcadero developers knew they also needed a more robust library to work with relational databases that were swiftly gaining popularity such as MySQL, MSSQL, Oracle, etc. Therefore, Embarcadero released DBExpress components that unified performance and transactional speed with the RDBMS. The catch was DBExpress's dataset model being largely unidirectional; teams that needed bi-directional navigation for edit/refresh workflows often ended up adding extra plumbing like DataSetProvider and TClientDataSet. The result was that many applications ran a mix of BDE and/or DBExpress, depending on which data path they were stuck supporting.

As the world moved from flat file databases to relational databases to embedded databases to NoSQL databases and simultaneously using them within the application, it was becoming harder for developers to keep different libraries working together; forms and data modules would be littered with dataset-interacting components, plus the supporting layers needed to get the expected bi-directional behavior.

To add to their woes, as databases got more complex, libraries such as BDE and DBExpress started to feel constraints both in terms of functionality as well as speed.

Why BDE and old stacks are now a risk

  • BDE has 16-bit dependencies and has been deprecated since 2002; it does not support 64-bit or cross-platform applications.
  • dbGo/ADO relies on Microsoft installers that keep changing location and behaviour, and is strictly Windows-only.
  • As you move toward Unicode, 64-bit, and Linux targets, relying on these older stacks becomes increasingly fragile.

Enter FireDAC

A unifying road map: To counter the above issues and set a compatible path for a foreseeable distant future, developers at Embarcadero released FireDAC: a one stop solution that allows interfacing with almost every popular open source or commercial database out there.

FireDAC is RAD Studio's cross-platform database access library, featuring a range of components and classes designed to simplify connections to most leading databases. Its open architecture allows for the integration of additional data sources, enabling developers to treat them seamlessly like a TDataSet.

Written from the ground up as a BDE replacement, FireDAC offers bi-directional dataset navigation and automatic translation of comparable field types (e.g., Timestamps, TSQLTimeStamp, TDateTime).

That means teams can avoid the extra plumbing often required with unidirectional stacks (such as DataSetProvider / TClientDataSet) and focus on faster, lower-risk migration. It also helps you move past BDE's legacy 16-bit dependency as you target modern 64-bit and cross-platform applications.

Moreover, FireDAC includes numerous speed and stability enhancements compared to other database components, significantly reducing network traffic while boosting the performance and reliability of data connections. It's not uncommon to hear developers say "I moved to FireDAC and now my Application is 20% faster".

FireDAC value, in plain terms

  • Bi-directional dataset navigation out of the box (no need to bolt on DataSetProvider / TClientDataSet for edit/refresh workflows)
  • A true BDE replacement, so migration is more rapid and low risk
  • Moving past BDE's legacy 16-bit dependencies as you target modern 64-bit and cross-platform data access

Why Move to FireDAC?

Due to the broad range of databases FireDAC supports, each with a native layer driver, it can be a good choice to replace ANY past or present database components. The top reasons for switching to FireDAC include…

Currently UsingReason
BDEStill has some 16-bit dependency. It's been deprecated since 2002. While people can still get it to work, it doesn't support 64-bit or cross-platform applications.
ADOMicrosoft are making it harder to get ADO installed. The installer keeps changing where it's accessed from, and is Windows specific. Features like "fetching blobs on demand" make FireDAC much faster to use vs ADO.
DBExpressThe original BDE replacement, but its unidirectional dataset model often required extra plumbing (such as DataSetProvider / TClientDataSet) to get the bi-directional navigation and editing workflows teams expected. DBExpress is now superseded by FireDAC, which has a much smoother migration path.
IBXGreat when you are staying InterBase/Firebird-only, but teams often move to FireDAC for broader database portability and modern features like unified driver options, pooling, and advanced fetch controls.

How to Migrate to FireDAC?

Migration typically involves four steps:

  1. Replace data access components on forms and data modules with FireDAC equivalents.
  2. Update uses clauses and connection configuration.
  3. Review hand-written SQL or vendor-specific features that might behave differently.
  4. Test performance and concurrency under realistic load.

There is no doubt that some refactoring is required when changing libraries. But thanks to Embarcadero's design of the database libraries, up to 80% of the work can be handled by search-and-replace over source code and form files using reFind.

reFind is a utility that automatically converts Delphi files from one component set to another. It includes example script files for BDE, ADO, DBExpress, and IBX so you can get productive quickly. It takes care of replacing components, updating uses clauses, and basic code modifications so you can get back to compiling fast.

reFind file locations

The tool is installed with RAD Studio:

C:\Program Files (x86)\Embarcadero\Studio\<version>\bin\reFind.exe

Common migration scripts ship here:

C:\Users\Public\Documents\Embarcadero\Studio\<version>\Samples\Object Pascal\Database\FireDAC\Tool\reFind\BDE2FDMigration\FireDAC_Migrate_BDE.txt

https://www.youtube.com/watch?v=_ttdy9_2rWo

Short walkthrough of using reFind for BDE/ADO/DBExpress migration. The practical demo runs from 00:08:39 to 00:11:40.

Additional Resources

Articles and Migration Scripts

Migrating BDE Applications to FireDAC

Official guide covering component mapping, connection configuration, and SQL dialect differences for BDE projects.

docwiki.embarcadero.com

Migrating dbExpress Applications to FireDAC

Covers the transition from unidirectional dbExpress datasets to FireDAC's bi-directional model.

docwiki.embarcadero.com

Migrating IBX Applications to FireDAC

Official IBX-to-FireDAC migration notes, including the `IBX2FDMigration` reFind script.

docwiki.embarcadero.com

Predefined reFind scripts are installed with RAD Studio at:

C:\Users\Public\Documents\Embarcadero\Studio\<version>\Samples\Object Pascal\Database\FireDAC\Tool\reFind

These include migration scripts for BDE, ADO, dbExpress, and IBX.

Deep-Dive Videos

Some reference videos are from slightly older versions of RAD Studio; UI details may differ, but the process remains the same.

https://www.youtube.com/watch?v=97oV-y2GwQQ

FireDAC Migration Made Easy: BDE, dbExpress, AnyDAC to FireDAC. Skip to 00:10:42 for the practical migration steps.

https://youtu.be/i6Mi7w6Z4TY?si=Wftf8niHkAZ0jwaQ&t=1030

Converting Legacy Projects to 10.4. This link jumps straight into the BDE conversion segment.

Ready to take the next step?

Our migration specialists have helped thousands of Delphi and C++Builder developers modernize their legacy architecture safely and efficiently.