Finally the day has come, Embarcadero acquired AnyDAC and there is a lot to talk about, early last year I invested a lot of time evaluating AnyDAC and know you know why 🙂 – I was very impressive with the amount of features, AnyDAC is everything dbExpress tried to be and never reached.

The reason I say that it’s because AnyDAC really allows developers to target multiples database without the workarounds required by dbExpress, like: Field Mapping when you persist the TFields. For long time AnyDAC allowed developers that use Delphi/C++Builder Professional edition to connect their application to Enterprise databases like Oracle, SQL Server, Sybase, Informix and others, something that was only possible through Enterprise and Architect edition, and much more.

Beyond that, there is a lot of specific database features supported by AnyDAC, which I consider very helpful in any database development, here some examples per database:

For all databases

Automatic Connection Recovery

Unified DB Events Support

Simplified architecture, it means no more Query + ClientDataSet + Provider just for a bi-directional cursor

Much better performance when compared with dbExpress

TADMemTable – in memory dataset, faster than TClientDataSet

Much easier to migrate BDE applications to AnyDAC than the traditional dbExpress architecture

Oracle

SELECT FOR UPDATE clause – no more workaround doing UPDATE just to lock the record

Query execution aborting – we always need that right?

ROWID columns for fast data editing and refreshing

RETURNING clause for fast data refreshing – no more select after the update to get a new value generated by trigger

and more…

Firebird

RETURNING clause for fast data refreshing

Trusted authentication

DB services – backup, restore, validate, security, etc

Query execution aborting

PostgreSQL

Yep, now you can connect natively with PostgreSQL

and more…

SQL Server

Batch commands with multiple result sets – Now you can use that and improve your app performance

Query execution aborting

and more…

MySQL

AUTO_INCREMENT columns and retrieving of last inserted value.

Drivers for several databases on Windows, Mac and iOS

This is a small list of interesting things on AnyDAC, you can find more here.

AnyDAC is a step forward and worth the effort to migrate from dbExpress to AnyDAC, there are lot of feature needed by Delphi and C++Builder developers, many of these features has been requested for a long time and you will have when using AnyDAC.

You may ask what is going to happen with dbExpress? BDE is dead, but still around :), dbExpress is not dead and I don’t think will die soon, but there is no reason to keep two database access technology since AnyDAC is way better than dbExpress.

FireDAC sounds like an important step forward. However, we use DbExpress on a couple of large projects and it may be difficult to get management to agree to replacing this.

Do you have, or know where I can find, data on the performance improvement of FireDAC over DbExpress? Also, for the FireDAC memory component over TClientDataset?

The DbExpress component TSQLConnection is needed when implementing a Datasnap client-server solution. Is there a FireDAC equivalent that will replace TSQLConnection?

Does FireDAC have the ability to read database schema information and to update a database table’s fields, field types or indexes? I would be surprised if it didn’t (even though the Embarcadero contact I spoke to said that it didn’t).

[…] Of course Embarcadero will promote FireDAC as a new feature in XE4, even it came recently on XE3 still a good point to talk about this, since FireDAC is way better them dbExpress. I blogged about that recently and you can read here. […]