Currently, there is several standardized and widely used APIs to access SQL databases, such as ODBC, JDBC, and ADO. Borland also released their proprietary database middleware interface for its development tools, called the Borland Database Engine (BDE). Despite being freely distributed with Borland’s popular line of application development tools, the BDE was unpopular because of complexities in installation and poor performance. As Delphi became one of the leading application development tools for the Windows platform, individuals and companies proposed alternative interfaces to the BDE. These “BDE Alternatives” optimized access to the database by directly using the native database driver, providing performance and feature advantages with respect to the BDE.
Realizing the limitations of the BDE, Borland proposed a new type of database interface called dbExpress. This interface was designed to broker access between Delphi and virtually any relational database through 3rd party drivers. Borland significantly improved the performance of dbExpress with respect to the BDE, but the implementation was buggy and supported only a limited subset of SQL that hampered functionality.
The Zeos Database Object component library (ZeosLib) is one of the best-known BDE alternatives. Originally the library was developed for MySQL and PostgreSQL databases, but support for other vendors was soon added. During the development process, certain limitations of the original design became more and more apparent. These limitations began to put a strain on the overall architecture and the development team decided a ground up rewrite was the best way to proceed. The new design was built to handle an extended feature list with several new requirements:
- Support for different compilers
- Versioning database driver system
- “Database Insensitive” design for cross-database development
- Support for multiple high level interfaces (TDataset, dbExpress, Midas)
- Extensible feature system for server specific support
The following compilers are supported:
- Delphi 5 – 7 and 9-11
- Lazarus (FreePascal)
- MSEide+MSEgui (FreePascal)
- C++ Builder 5 – 6
- Kylix 2 – 3
- MySQL 3.20 – 5.0
- PostgreSQL 6.5 – 8.1
- Firebird 1.0 – 2.0
- Interbase 5.0 – 7.5
- Microsoft SQL Server 7, 2000
- Sybase ASE 12.0, 12.5
- Oracle 9i
- SQLite 2.8, 3.5
- Platform independance. The ZeosDBO is highly generic. Applications written in ZeosDBO can be migrated across databases without major changes.
- ZeosDBO is open source, written for usability and extensibility.
- ZeosDBO leverages the amazing power of the Delphi development environment without relying on a performance killing middleware.
- ZeosDBO is an extremely thin abstraction layer, unlike ‘thick’ layered protocols like ADO and BDE.
- ZCore – Core classes and interfaces. Contains Java style objects and collections as well as compatibility types and functions.
- ZParseSql – SQL specific for syntax and lexical analysis.
- ZPlain – Native plain API to supported SQL servers.
- ZDbc – Port of Java Database Connectivity API (JDBC 2.0). DBC API acts as intermediate layer between Plain API and highlevel TDataset or DBExpress components
- ZComponent – visual components descended from TDataset.
- ZComponentDesign – design time components. This package is not available for all compilers. If present it’s only needed to install the components in the IDE.
- TZConnection: This component encapsulates the database connection and transaction management.
- TZReadOnlyQuery: TDataset component to execute SQL queries and process data in read-only mode.
- TZQuery: TDataset component which allows data modifications in regular and cached mode.
- TZUpdateSQL: Analog of standard TUpdateSQL component to explicite definition of Insert/Update/Delete SQL statements for TDataset modifications.
- TZStoredProc: The component to execute SQL stored procedures.
- TZSQLProcessor: The component to execute SQL scripts for different SQL and various delimiter types.
- TZSQLMonitor: The component to monitor all outgoing SQL queries and other logging information.
- TZSQLMetadata: Specialized TDataset component which provides an access to database metadata such as tables, columns, indices, etc.
Author : Zeos Development Group