Access to databases is done with a client library. ODBC and SQL are established standards. The problem is, that ODBC doesn't specify the wire protocol and for some databases no ODBC driver exists. Tou might use RPC, TCP/IP, or shared memory and signals to pass the request from the client to the server. So you have to use the database specific ODBC library. This library might not be available for the CPU or operating system on which the client is running.
SQL itself is also not standardized enough, so that source compatibility can not be assured for all database servers. And for some sort of servers, SQL is not even feasable (think about LDAP).
GDA tries to tackle the ODBC problem and help you with the SQL problem. It's a sort of middleware (or can be blown up to be a middleware layer) to access different data sources. I took a long look at the ADO implementation of Microsoft and GDA is heavily inspired by this model. 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.