ODBC and SQL are established standards. However ODBC is mostly limited to the Microsoft Windows environment (even though the UnixODBC project exists and links to some drivers), and the API is quite old and not well integrated into the GNOME ecosystem.

SQL itself is standardized but up to some point only, so that SQL source compatibility can not be assured for all database servers. And for some sort of servers, SQL is not even feasible (think about LDAP).

JDBC is a more recent standard which replaces ODBC in the Java world, but it's limited to the Java programming world, and is difficult to integrate in C (or other languages different from Java). There are however a lot of JDBC drivers out there for many database engines.

GDA (GNOME Data Access) tries to tackle the ODBC and JDBC "limitations" and help you with the SQL problem. It's a sort of middleware to access different data sources. It offers a high level view of data sources and has some places where you can plug in low level access to the database for special tasks.

It offers a wrapper around the database internals, thus making it easier for programmers to make use of all the power provided by many RDBMS without knowing much about it. It comes as a set of libraries, a core one and some extensions (the GTK+ UI extension for example) and some drivers for the most common OpenSource or proprietary database engines.

Some of these drivers are a bit special: the LDAP provider allows one to adress an LDAP directory as if it were composed of tables (provided some configuration), and the JDBC provider "wraps" any JDBC driver.

Along with these libraries (and associated header files and language bindings for development), Libgda includes several tools and utilities to help you with the task of developing applications based on Libgda, as well as for automating some database-related tasks.

Libgda is implemented for UNIX-like operating systems (including Linux), and Windows.